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=word
where 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=literal
Note 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 deeper
Note that although the listing above includes a trailing slash for the
deeper
entry, the offsets select the name without the trailing slash. However, if you invokels
with--dired
along 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=escape
If 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--dired
should either specify an explicit--quoting-style=literal
option (aka-N
or--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.