Использование чернослива не работает в команде find

Я пытаюсь использовать чернослив как:

find /opt/app/bss/sieb/fs_clone1/userpref -name "*" -type f -mtime -7 -prune 

Это все еще ищет подкаталоги.

2 Solutions collect form web for “Использование чернослива не работает в команде find”

Он по-прежнему ищет подкаталоги, потому что вы не -prun их.

Чтобы -prune дерево find вы должны сначала сопоставить его.

 find / -type d ! -path / -prune -print 

 /boot /home /mnt /opt /esp /dev /proc /root /run /srv /sys /tmp /usr /var /etc 

Мне пришлось использовать -path / потому что в противном случае первый найденный каталог был бы / root, и он был бы -prune 'd then -print ed.

Но, как вы можете видеть, это сопоставленные файлы, которые являются -prune d и ничего другого. Поэтому, если вы сопоставляете -type f вы не будете -prune какие-либо деревья вообще – обычные файлы не имеют подкаталогов.

Вы, вероятно, хотите что-то вроде:

 find /opt/app/bss/sieb/fs_clone1/userpref \ -path \*path/to/ignore -prune -o \ ! -type d -mtime -7 

Это очень отличается от вашего заявления. Во-первых, -path path/to/ignore не работает. Он должен соответствовать целым путям, а начальное дерево начинается с / но path/to/ignore вообще отсутствует. Поэтому я помещаю * globstar, но лучше – и, возможно, более кратким может быть:

 cd /opt/app/bss/sieb/fs_clone1/userpref && find . -path ./path/to/ignore -prune -o \ ! -type d -mtime 7 

… что сделает вашу продукцию намного менее беспорядочной. В любом случае, все пути, сопоставленные шаблону -prune будут отображаться как -prune 'd, а затем не печататься, потому что мы – в сторону другого оператора, и это только последнее выражение всего сценария find , которое автоматически запускается.

Последняя часть также отличается. Я сбросил -name '*' потому что все имена соответствуют '*' и поэтому вы можете просто не фильтровать их. И ! -type d ! -type d – это то, что я обнаружил, что многие люди часто имеют в виду, когда говорят – -type f . Первый соответствует любому типу файлов, который не является каталогом, – чтобы включить фифы и сокеты, а остальные – странные. Последний соответствует только обычным файлам. Возможно, вы действительно хотите последнего, но я просто подумал, что я бы сказал об этом.

Во всяком случае, когда все сказано и сделано, *path/to/ignore сопоставляется, обрезается и не печатается, а затем все остальное, файлы, которые не являются типом каталога и которые были изменены 7 дней назад.

 find /opt/app/bss/sieb/fs_clone1/userpref -type f -mtime -7 -path path/to/ignore -prune -o -print 

Но я думаю, что вам нужно -depth .

Обратите внимание, что −maxdepth 0 означает только применить тесты и действия к аргументам командной строки. −mindepth 1 означает обработку всех файлов, кроме аргументов командной строки.

  • Ошибка mv command "уже существующий файл"
  • Почему на выходе моей команды есть пустые строки ?: find ~ / x / y / | shuf> ~ / Desktop / z.txt
  • Исключить пути, которые заставят find жаловаться на разрешения
  • Другие вопросы о -path для поиска
  • Как я могу искать файлы без определенных расширений в своих именах?
  • Использование команды find для переименования файлов
  • Разница в синтаксисе команды find
  • почему команда find использует {} для переменной-заполнителя?
  • отсутствующий аргумент для поиска -exec
  • Список владельцев файлов
  • Исключить каталоги в поиске местоположения
  • Interesting Posts

    Флокирование filedescriptor в сценарии оболочки

    Использование exec в поиске поверх ssh из сценария оболочки

    Scanimage работает, но Xsane или любой другой пользовательский интерфейс не

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

    Arch Linux: проблема с новичком только в процессе установки (например, ошибка)

    MacOS X Mavericks, работающий с VirtualBox, не может взаимодействовать с Linux VM

    Unix Shell и цвета

    sed для удаления 2 символов только в том случае, если это поле и пространство

    сообщение «done» после того, как & -команда не отображается сразу же, но после действия пользователя. Зачем?

    проанализировать файл журнала, который принимает аргумент (время выполнения тестов)

    Что означает название команды unix?

    Изменение имени пользователя, но не домашней директории

    32-разрядное приложение на 64-битном Linux не работает

    Сортировка вывода awk за исключением первой строки?

    Command & binary существует, но не может быть выполнена

    Linux и Unix - лучшая ОС в мире.