У меня есть интересная проблема. Я пытаюсь создать символические ссылки в одной папке для всех файлов в каталоге, размер которых превышает указанный размер.

Для пояснения вот пример:

/Files
    /Large_Files
        /LargeFile1_symlink
        /LargeFile2_symlink
    /Folder1
        /file_a
        /file_b
    /Folder2
        /LargeFile1
    /Folder3
        /LargeFile2
        /file_c

Я до сих пор пытаюсь это сделать:

find -size +102400 -exec ln -s $PWD/{} Large_Files/ \;

Тем не менее, эта находка производит

./LargeFile1

Так что моя команда symlink производит

ln -s /Files/Folder2/./LargeFile1 Large_Files/

Мой вопрос: можно ли использовать команду basename для выделения только имени файла, чтобы эта команда работала? Или у кого-нибудь есть предложение, как это сделать без написания сценария, или приведите пример написания сценария?

Я никогда раньше не писал сценарии, но я знаю Java, но не хочу тратить время на то, чтобы сделать все это на Java.

Спасибо за любую помощь!

Изменить: добавление тегов

1 ответ1

0
$ find /usr/lib -size +20M  -size -25M -exec sh -c 'ln -s "{}" /tmp/huge/`basename {}`' \;
find: `/usr/lib/mozilla': Permission denied
geee: /
$ ll /tmp/huge/
total 0
lrwxrwxrwx 1 jaroslav jaroslav 45 Nov  9 02:55 HSghc-6.12.3.o -> /usr/lib/ghc-6.12.3/ghc-6.12.3/HSghc-6.12.3.o
lrwxrwxrwx 1 jaroslav jaroslav 54 Nov  9 02:55 libHSbase-4.2.0.2_p.a -> /usr/lib/ghc-6.12.3/base-4.2.0.2/libHSbase-4.2.0.2_p.a
lrwxrwxrwx 1 jaroslav jaroslav 56 Nov  9 02:55 libHSCabal-1.8.0.6_p.a -> /usr/lib/ghc-6.12.3/Cabal-1.8.0.6/libHSCabal-1.8.0.6_p.a
lrwxrwxrwx 1 jaroslav jaroslav 59 Nov  9 02:55 libHSghc-6.12.3-ghc6.12.3.so -> /usr/lib/ghc-6.12.3/ghc-6.12.3/libHSghc-6.12.3-ghc6.12.3.so
lrwxrwxrwx 1 jaroslav jaroslav 33 Nov  9 02:55 libQtWebKit.so.4.9.2 -> /usr/lib/qt4/libQtWebKit.so.4.9.2
lrwxrwxrwx 1 jaroslav jaroslav 26 Nov  9 02:55 libxul.so -> /usr/lib/firefox/libxul.so
lrwxrwxrwx 1 jaroslav jaroslav 20 Nov  9 02:55 opera -> /usr/lib/opera/opera

связи

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .