![使用 find exec ubuntu 10.04 有条件地按文件大小创建符号链接](https://linux22.com/image/1337368/%E4%BD%BF%E7%94%A8%20find%20exec%20ubuntu%2010.04%20%E6%9C%89%E6%9D%A1%E4%BB%B6%E5%9C%B0%E6%8C%89%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%E5%88%9B%E5%BB%BA%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5.png)
我有一个有趣的问题。我试图在单个文件夹中为目录中所有大于指定大小的文件创建符号链接。
为了清楚起见,这里有一个例子:
/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
$ 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