Как перечислить файлы на терминале так, чтобы мы видели типы файлов такой исполняемый файл, ASCII и т.д.?

Беспроводная сеть использовала WEP, который, как указано страницей Wiki в вопросе, не поддерживается. Я предположил, что это означало, "будет работать, но иметь странные проблемы", но на самом деле, обновляя встроенное микропрограммное обеспечение, затем использование новых опций переключиться на WPA2 решило мою проблему.

3
22.03.2015, 19:16
2 ответа

ls сама по себе не покажет эту информацию.

Вывод find можно подключить к файлу -f - следующим образом:

$ find /usr/local/bin | file -f -
/usr/local/bin:              directory 
/usr/local/bin/apt:                  Python script, ASCII text executable
/usr/local/bin/mint-md5sum:                          ASCII text
/usr/local/bin/search:                     Bourne-Again shell script, ASCII text executable
/usr/local/bin/gnome-help:                         Python script, ASCII text executable
/usr/local/bin/office-vb.sh:                           ASCII text
/usr/local/bin/pastebin:                       Python script, ASCII text executable
/usr/local/bin/highlight:                        POSIX shell script, ASCII text executable
/usr/local/bin/yelp:                   Python script, ASCII text executable

Обратите внимание, что вместо ls используется find, так как он будет печатать полный путь, в то время как ls будет печатать только имя файла. Таким образом, если Вам просто необходимо сделать это с файлами в Вашем текущем каталоге, то:

ls | file -f -

сработает.

3
27.01.2020, 21:19

LS не делает этого. Его работа состоит в том, чтобы сообщить о файловых метаданных (разрешения, метки времени и т. Д.), Не содержимое файла. Но сам сам (в сочетании с подстановочным пристровом оболочке, чтобы переписать все файлы):

file *

для текущего каталога или

file /some/directory/*

в другом каталоге.

Если вы хотите объединить информацию о метаданных и содержимого файла, вы можете объединить вывод LS и файла . Один из способов - договориться о двух командах, чтобы перечислить один файл в строке в том же порядке, и использовать утилиту Paste , чтобы объединить их - что-то вроде

paste <(ls -dlog -- *) <(file -b -- *)

(это использует замену процесса, которая доступна в общем Интерактивные раковины: Bash, ZSH, также в KSH93.) Если у вас есть утилита колонна , это удобный способ выравнивания столбцов:

paste <(ls -dlog -- *) <(file -b -- *) | column -ts $'\t'

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

join -t $'\t' -1 2 -2 1 <(ls -dlog -- * |
                          sed 's/^\([^ ][^ ]*  *[^ ][^ ]*  *[^ ][^ ]*  *[^ ][^ ]*  *[^ ][^ ]*  *[^ ][^ ]*\)  */\1\t/') \
                        <(file -- * | sed 's/: */\t/') |
column -ts $'\t'
1
27.01.2020, 21:19

Теги

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