Intereting Posts
Как я могу создать живой ISO для настраиваемой операционной системы? Как я могу печатать строки из файла назад (без использования «tac»)? Nginx прослушивает порт, только отвечает, если установлен на порт 80 громкость luks исчезает после перезагрузки Присоедините два файла с соответствующими столбцами Очень медленное соединение SSH, не связанное с опцией GSSAPIAuthentication Насколько хороша поддержка ИБП на основе NUT для APC? разрешить только определенным пользователям входить в систему через sshd, но отказывать в подключении к пользователям, не включенным в список Как правильно форматировать вывод с помощью команды Awk printf? Сценарий оболочки для поиска и подсчета общего количества символов во всех файлах Как я могу изменить адрес из почты * nix во всем мире? Подтверждение того, что был создан обратный туннель ssh Окно приложения стало невероятно широким, почти непригодным для использования Увеличение ограничения размера для / var / cache / apt / archives Замените обратную косую черту sed

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

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

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

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

Он по-прежнему ищет подкаталоги, потому что вы не -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 означает обработку всех файлов, кроме аргументов командной строки.