Если вы хотите перечислить все файлы, кроме тех, которые находятся в определенном каталоге, скажем, notHere
, здесь вы можете использовать команду find
чтобы сделать это следующим образом
find . -path ./notHere -prune -o -type f -print
Объяснение:
.
: каталог для начала find
в
-path ./notHere
: запустить правило, которое будет соответствовать пути ./notHere
-prune
: предотвратить find
по каталогу с текущим соответствием
-o
: добавить or
чтобы указать, что мы хотим, чтобы первое правило не совпадало
-type f
: сопоставлять только файлы, а не, скажем, каталоги (удалите это, если вы также хотите видеть записи каталога)
-print
: часто не требуется, поскольку это действие по умолчанию, но в некоторых версиях find
все еще требуется, чтобы вы прямо сказали, что хотите, чтобы результат был распечатан
Вы упоминаете, что хотите получить другой вывод (в частности, ls -ll
), а не только список имен файлов. find
часто есть встроенная функция, чтобы помочь с этим, хотя и не те специфические опции для ls
. Вы можете заменить флаг -print
выше на -ls
и посмотреть, достаточно ли близок для вас этот набор параметров ls
:
find . -path ./notHere -prune -o -type f -ls
или, если этого недостаточно, вы можете find
команду run, которую хотите, вместо того, чтобы пытаться обрабатывать вывод отдельно, например:
find . -path ./notHere -prune -o -type f -exec ls -ll {} +