链接多个文件

链接多个文件

例如bash,假设我想链接目录中的部分文件(但不是全部),例如,

ln -s /dir/file1 /dir/file2 ... /other/dir

但文件名称的格式不遵循一些简单的规则,所以我们不能使用类似

ln -s /dir/file* /target/dir.

有什么办法可以不重复吗/dir,例如:

/dir/{file1 file2 ...} = /dir/file1 /dir/file2 ...

因此我们可以做类似的事情:

ln -s /dir/{file1 file2 ...} /target/dir

答案1

是的,语法与您想要执行的操作非常相似。说:

ln -s /dir/{file1,file2,foo,bar} /target/dir

将文件file1file2foobar从链接/dir//target/dir/

上述语法称为括号扩展

(大括号扩展导致/dir/{file1,file2,foo,bar}扩展为/dir/file1 /dir/file2 /dir/foo /dir/bar。)

答案2

对于复杂的规则,请尝试这样做:

cd dir
find . -name 'file1*' -or -name 'file2*' -or ... -exec ln -s '{}' '/other/dir/{}' ';'

请注意,所有 '*'、'{}' 和 ';' 都必须用引号引起来,以防止 shell 扩展和原始传递以进行查找!

对于简单的枚举来说,shell 扩展{aa,bb,cc}是否足够好。

相关内容