Как делают я делаю, находят, следуют больше всего, но не все, символьные ссылки?

Ваша привычка карты флэш-памяти с интерфейсом USB быть более затронутой производительностью файловой системы, чем Вашим usb соединяет интерфейсом со скоростями. Скорости интерфейса USB 2.0 являются очень низкими, и скорости записи флеш-накопителя являются очень низкими, столь медленными, что тяжелая операция записи замедлила бы процесс для проверки.

10
01.01.2014, 02:11
4 ответа

-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 не распознает, как бы то ни было.

11
27.01.2020, 20:02
  • 1
    Кажется, что этот сценарий делает то же самое три раза Спасибо! -prune просто вид вещи, которую я искал. Я нашел это find ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d списки все символьные ссылки, за которыми я не хочу следовать; я теперь пытаюсь найти способ использовать тот запрос для сокращения. –  Mark Raymond 01.01.2014, 13:00
  • 2
    @MarkRaymond, общий принцип find ~ <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
  • 3
    @Giles - который хорошо работает без-L, но после того как я добавляю-L,-lname выражения больше не работают (поскольку в странице справочника говорится, что они не будут). Так в основном мне затем нужны некоторые условия следовать за символьными ссылками и другими не к! –  Mark Raymond 01.01.2014, 17:50
  • 4
    я не могу думать о способе сделать точно, что Вы хотите с находкой. Посмотрите мое редактирование для некоторых приближений. –  Gilles 'SO- stop being evil' 01.01.2014, 18:21

Сколько символьных ссылок на жесткие диски Вы имеете? Если это не слишком многие, одно решение не состоит в том, чтобы использовать "-L", явно указывая символьные ссылки, что Вы действительно хотите последовать командная строка находки. Что-то как:

find .  ~/Videos/Films -name '*file I want*' ...

Это будет искать текущий каталог (". "), а также символьная ссылка "~/Videos/Films", но не будет убывать в другие символьные ссылки.

0
27.01.2020, 20:02

Для поиска ВСЕХ ссылок у меня сработало:

find -L . -name \*.txt
1
27.01.2020, 20:02

Другое решение, которое позволяет обойти эту проблему (по крайней мере, в моем случае), заключается в использовании связывающего монтирования вместо символических ссылок для каталогов на жестком диске. Это делается путем добавления в /etc/fstab следующих записей:

/mnt/hdd/Films /home/mark/Videos/Films none bind 0 0

0
27.01.2020, 20:02

Теги

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