find exec ubuntu 10.04を使用して、ファイルサイズで条件付きでシンボリックリンクを作成します。


0

私は面白い問題を抱えています。指定したサイズより大きいディレクトリ内のすべてのファイルに対して、単一のフォルダにシンボリックリンクを作成しようとしています。

明確にするために、これは例です:

/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でこれらすべてを行う時間をかけたくありません。

助けてくれてありがとう!

編集:タグを追加する

回答:


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

links


どうもありがとうございます!私は自分の命令に近いと思った。上記に問題がありました、私は -aスイッチを追加するために必要 それ以外の場合はランダムにファイル名を切り捨てます(ファイル名にはスペースが含まれます)。 @ЯрославРахматуллин
jmlw

スペースを使用して引数を引用符で囲みます。
Ярослав Рахматуллин
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.