Ваша привычка карты флэш-памяти с интерфейсом USB быть более затронутой производительностью файловой системы, чем Вашим usb соединяет интерфейсом со скоростями. Скорости интерфейса USB 2.0 являются очень низкими, и скорости записи флеш-накопителя являются очень низкими, столь медленными, что тяжелая операция записи замедлила бы процесс для проверки.
-prune
основной говорит find
не рекурсивно вызывать в соответствии с каталогом.
find -L -path ~/.wine/dosdevices -prune -o -type f -name 'My Favorite Movie.*' -print
Если Вы хотите использовать -lname
в Вашем условии Вы не можете использовать -L
опция, потому что -L
причины большинство предикатов для действия на цель ссылки, включая -lname
. Моя рекомендация в этом случае состояла бы в том, чтобы использовать и Ваш корневой каталог и корень жесткого диска как корни Вашего поиска.
find ~ /mnt/hdd -xtype f -name 'My Favorite Movie.*'
Вы могли бы работать find ~ -type l …
собрать список символьных ссылок и использовать их в качестве дополнительных корней.
( IFS=$'\n'; set -f;
find ~ $(find ~ -type l -lname '/mnt/hdd/*') \
-xtype f -name 'My Favorite Movie.*' )
Если Вы действительно хотите рекурсивно вызвать под символьными ссылками, можно исключить определенные символьные ссылки целью вместо по имени. Однако можно только исключить конечный список, не шаблон или поддерево этот путь.
find -L \( -samefile /exclude/this -o -samefile ~/and/that \) -prune -o \
-type f -name 'My Favorite Movie.*' -print
Можно использовать другие критерии такой как ! -writable
(файлы, к которым у Вас нет разрешения записи), но я не думаю, что GNU находит, имеет способ рекурсивно вызвать под символьными ссылками, только если их целевой текст соответствует определенному выражению.
Вы могли создать a find
команда, которая делает почти, что Вы хотите за исключением не, исключая достаточные символьные ссылки, выполните find2perl, чтобы преобразовать запрос в сценарий Perl и настроить сценарий Perl немного. Существует много переключателей GNU, находят, что find2perl не распознает, как бы то ни было.
Сколько символьных ссылок на жесткие диски Вы имеете? Если это не слишком многие, одно решение не состоит в том, чтобы использовать "-L", явно указывая символьные ссылки, что Вы действительно хотите последовать командная строка находки. Что-то как:
find . ~/Videos/Films -name '*file I want*' ...
Это будет искать текущий каталог (". "), а также символьная ссылка "~/Videos/Films", но не будет убывать в другие символьные ссылки.
Другое решение, которое позволяет обойти эту проблему (по крайней мере, в моем случае), заключается в использовании связывающего монтирования вместо символических ссылок для каталогов на жестком диске. Это делается путем добавления в /etc/fstab
следующих записей:
/mnt/hdd/Films /home/mark/Videos/Films none bind 0 0
-prune
просто вид вещи, которую я искал. Я нашел этоfind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d
списки все символьные ссылки, за которыми я не хочу следовать; я теперь пытаюсь найти способ использовать тот запрос для сокращения. – Mark Raymond 01.01.2014, 13:00find ~ <negative criteria> -prune -o <positive criteria> -print
, такfind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d -prune -o <whatever it is you want> -print
– Gilles 'SO- stop being evil' 01.01.2014, 17:09