我尝试这个:
for file in `ls -1 ../files/file_??_??.dat` ; do echo "$file" ; ln "$file" ; done
并且对于每个文件都会出现此错误:
ln: 无法创建硬链接 './file_01_am.dat' => '../files/file_01_am.dat': 没有此文件或目录
但在命令行上这可以正常工作:
ln ../files/file_01_am.dat
为什么ln
在循环中失败(也只是直接在命令行上写)而直接执行时在命令行上不会失败?
仅供参考,以下命令也会以与上述循环相同的方式失败(为了达到更好的效果,该命令还会尝试绝对路径名):
find /media/files -name "file_??_??.dat" -print0 | xargs -0 -L 1 ln
我真的不想手动硬链接每个文件!
该files
目录是已安装的smb
文件系统。奇怪的是,ln
如果我直接发出该命令,该命令可以正常工作,但在任何类型的循环中执行时则不行。
请帮忙。
答案1
用这个 :
find /media/file_??_??.dat -exec ln {} \;