2014-11-04 2 views
2

Я пытаюсь найти файл, а затем создать жесткую ссылку с тем же именем в другом каталоге. Но это не работает, если я принимаю -exec и после этого, он отображает один результат. У меня уже есть работа с cp, но я решил сделать жесткую ссылку.linux найти файл и создать hardlink

find . -iname "*sample*" -exec link {} ~/{} \; 
+0

Является ли целевой каталог на том же физическом устройстве, что и источник? Жесткие ссылки не могут охватывать точки монтирования. –

+0

@shellter Сценарий работает до «link {} ~/{} \;". Ничего не произошло. –

+0

@WilliamPursell Да, это так. У меня только один жесткий диск. –

ответ

0

Проблема возникает из-за того, что {} содержит путь найденного файла; поэтому ~/{} не путь в ~, но в какой-то несуществующей подкаталоге.

Я не нашел способ получить {} basename, используя find ни xargs.

Вот одно решение, которое работает, но небезопасно:

find . -iname "*sample*" | while read f ; do link "$f" "$HOME/${f##*/}" ; done 

Вы можете добавить фильтр между find и read, чтобы избавиться от «опасных» имен файлов.

+0

Это не проблема, так как она не работает ни с '-execdir', ни с сообщениями об ошибках. –

+0

@EdouardThiel ссылка: не удается создать ссылку '~/file' to. ./folder1/folder2/file ': Нет такого файла или каталога –

+0

@DavidCuster Вы шутите ?? с самого начала вы говорите, что у вас нет сообщений об ошибках! –

Смежные вопросы