Рекурсивный список файлов в каталоге и их содержимого

ls -ld */

Это даст вам каталоги в текущем каталоге в lsдлинном формате в лексикографическом порядке. Если файл является символической ссылкой на каталог, он также будет указан как каталог.

Если у вас есть lsпсевдоним для чего-то, используйте command lsили \lsвместо lsвыше.

Конечная косая черта после *гарантирует, что *расширяется только до каталогов (, возможно, путем разрешения символических ссылок ), и он также будет включен в вывод. Опция -dгарантирует, что будут перечислены сами каталоги, а не их содержимое.

Как указывает Джефф , называть свой псевдоним ld— плохая идея, поскольку оно противоречит имени существующей утилиты.

0
10.05.2020, 19:06
2 ответа

Если все файлы содержат только одну строку:

find /some/dir -type f -exec awk '{print FILENAME ": " $0}' {} +

В противном случае напечатайте одну строку с именем файла в качестве заголовка:

find /some/dir -type f -exec awk 'FNR<2{print FILENAME ":"}1' {} +
1
28.04.2021, 23:15

С GNU grep(, которая является реализацией, найденной в CEntOS )или совместимой:

grep -r '^' /some/dir

Регулярное выражение ^соответствует началу каждой строки, поэтому соответствует каждой строке. grepдобавляет имя файла к каждой соответствующей строке. Вы также можете добавить опцию -nдля включения номеров строк.

POSIXly:

find /some/dir -type f -exec grep '^' /dev/null {} +

Мы добавляем /dev/null, чтобы убедиться, что grepпечатает имя файла, даже если список файлов состоит только из одного элемента.

2
28.04.2021, 23:15

Теги

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