A saída de ls -D deve ser analisada pelo modo dired do Emacs.
‘-D’ ‘--dired’With the long listing (
-l) format, print an additional line after the main output://DIRED// beg1 end1 beg2 end2 …The begn and endn are unsigned integers that record the byte position of the beginning and end of each file name in the output. This makes it easy for Emacs to find the names, even when they contain unusual characters such as space or newline, without fancy searching.
If directories are being listed recursively (
-R), output a similar line with offsets for each subdirectory name://SUBDIRED// beg1 end1 …Finally, output a line of the form:
//DIRED-OPTIONS// --quoting-style=wordwhere word is the quoting style (see Formatting the file names).
Here is an actual example:
$ mkdir -p a/sub/deeper a/sub2 $ touch a/f1 a/f2 $ touch a/sub/deeper/file $ ls -gloRF --dired a a: total 8 -rw-r--r-- 1 0 Jun 10 12:27 f1 -rw-r--r-- 1 0 Jun 10 12:27 f2 drwxr-xr-x 3 4096 Jun 10 12:27 sub/ drwxr-xr-x 2 4096 Jun 10 12:27 sub2/ a/sub: total 4 drwxr-xr-x 2 4096 Jun 10 12:27 deeper/ a/sub/deeper: total 0 -rw-r--r-- 1 0 Jun 10 12:27 file a/sub2: total 0 //DIRED// 48 50 84 86 120 123 158 162 217 223 282 286 //SUBDIRED// 2 3 167 172 228 240 290 296 //DIRED-OPTIONS// --quoting-style=literalNote that the pairs of offsets on the ‘//DIRED//’ line above delimit these names: f1, f2, sub, sub2, deeper, file. The offsets on the ‘//SUBDIRED//’ line delimit the following directory names:
a,a/sub,a/sub/deeper,a/sub2.Here is an example of how to extract the fifth entry name,
deeper, corresponding to the pair of offsets, 222 and 228:$ ls -gloRF --dired a > out $ dd bs=1 skip=222 count=6 < out 2>/dev/null; echo deeperNote that although the listing above includes a trailing slash for the
deeperentry, the offsets select the name without the trailing slash. However, if you invokelswith--diredalong with an option like--escape(aka-b) and operate on a file whose name contains special characters, notice that the backslash is included:$ touch 'a b' $ ls -blog --dired 'a b' -rw-r--r-- 1 0 Jun 10 12:28 a\ b //DIRED// 30 34 //DIRED-OPTIONS// --quoting-style=escapeIf you use a quoting style that adds quote marks (e.g.,
--quoting-style=c), then the offsets include the quote marks. So beware that the user may select the quoting style via the environment variableQUOTING_STYLE. Hence, applications using--diredshould either specify an explicit--quoting-style=literaloption (aka-Nor--literal) on the command line, or else be prepared to parse the escaped names.
Os números são as posições dos nomes dos arquivos na saída
The begn and endn are unsigned integers that record the byte position of the beginning and end of each file name in the output.