Как сделать ls вид расширением файла и затем назвать?

По умолчанию ls управляют видами только именем файла, но я хочу, чтобы каталоги появились перед другими типами файлов. Я мог бы даже хотеть, чтобы файлы были отсортированы следовательно, как путь виды Windows Explorer столбцом типа. Существует ли способ сделать что-то похожее с ls?

44
задан 03.10.2017, 14:05

4 ответа

Я думаю, что полный ответ - это скорее комбинация из вышесказанного.

-X (позже --sort=extension) поддерживается в Linux, по крайней мере с FC3 и будет сортироваться на основе расширений. --group-directories-first было добавлено совсем недавно (может быть около FC8?). Однако, похоже, что их объединение не работает (по крайней мере, на FC8).

Похоже, что основная проблема заключается в использовании сингулярных ключей первичного сорта. Смотрите обсуждение списка рассылки , чтобы получить некоторое представление о нем.

.
42
ответ дан 07.12.2019, 08:38

На Linux,

$ ls --group-directories-first

(man ls Ваш друг!)

23
ответ дан 07.12.2019, 08:38

- X опция, которую Вы ищете:

ls -lX
14
ответ дан 07.12.2019, 08:38

Если Вы работаете на Linux, GNU ls поддержки --sort опция:-

ls --sort=extension
2
ответ дан 07.12.2019, 08:38

Если Вы не находитесь на Linux,

ls -l |sort -d -k 1.1,1.1r -k 9 |awk '{print $9}'

должен отсортировать каталоги сначала (сообщите мне, неправ ли я). Не сортирует следовательно, хотя: необходимо сделать awk оператор намного более занятым, если Вы хотите сделать это...


Чтобы также заставить его работать с именами, содержащими пробелы, я, вероятно, заменил бы awk чем-то как sed -E -e 's/([^ ]+[ ]+){8}//' разделять первые 8 полей вместо того, чтобы печатать 9-е

3
ответ дан 07.12.2019, 08:38

На баше, это будет что-то вроде работы:

$ ls | rev | sort | rev

От man rev:

 The rev utility copies the specified files to the standard output,
 reversing the order of characters in every line.  If no files are speci-
 fied, the standard input is read.

Так что... 1. ls дает свой выход, с любыми флагами, которые вы захотите. 2. каждая линия перевернута 3. Тогда они отсортированы 4. и снова повернул вспять 5. вот так:

  1. вот так:
  2. каждая строка перевернута
  3. затем они отсортированы
  4. и снова перевернуты. Так
  5. ls дает свой вывод, с любыми флагами, которые вы хотите

Или, более того, как показано ниже. Они сортируются по последнему символу, затем следующему и т.д. Все файлы .rtf, например, перечислены вместе, после .save-файла и другого файла без расширения, имя которого заканчивается на 'e'. Затем идут файлы .png и так далее. Это также сработает и с ls -l, потому что расширение, как правило, последнее в строке (исключения, если у вас есть строки типа "tmp@ -> /home/jones/tmp", где ссылки следуют за их целями).

 $ ls | rev|sort|rev
 cslu1
 ls.mp2
 ls.mp3
 ls.mp4
 trees_110214-15
 PAT
 CSLU
 Proxy Form.doc
 finannbyid
 toannbyid
 101209ssi.txt.save
 to_annotate_size
 Matas-time-by-week-integration2.rtf
 cyp3.rtf
 data-dir-scan.perl.doc.rtf
 whence-r21-numid.rtf
 platypus.rtf
 Screen shot 2011-01-21 at 2.17.50 PM.png
 emacs print help.png
 log
 new_month_log
 special
 Google-ngram-critique.html
 perl_path.html
 nl
 DWE_BEN_89808.2.ann
 foo
 d.o.foo
 100811_from_iMac_Documents_in_dock.zip
 to-palikir.zip
 tmp
 file-cleanup
 bar
 data-scan-docs
 cmp-mg-ann-numids
 finished_numids
 to_annotate_numids
 manls.ps
 Mike_address_ticket
 cyp2.out
 cyp3.out
 locate-cyp.out
 manls.out
 DWE_BEN_89808.2.text
 tag2.txt
 l2.txt
 du-h-d3.txt
 finished_ann_numids_110407_1714.txt
 finished_all_numids_110407_1718.txt
 data-dir-scan.perl.doc.txt
 whence-r21-numid.txt
 finannid.txt
 toannid.txt
 b9-workspace-anndiff.txt
 tag.txt
 duh.txt
 d.o-mail.txt
 safextn.txt
 mg3longhdr.txt
 finished_numids.txt
 41692-langnames.txt
 TimeAnnotationGuidelines.txt
 41langs.txt
 thing4-homedir-links.txt
 bnlinks.txt
 grants.txt
 mata-file-reports.txt
 logx.txt
 logx
 b9-workspace-anndiff.txt~
 bnlinks.txt~ 
13
ответ дан 07.12.2019, 08:38

Теги

Похожие вопросы