[英]How do I selectively create symbolic links to specific files in another directory in LINUX?
我不确定如何执行此操作,但是我需要在一个目录中为某些文件创建符号链接,然后将符号链接放置在另一个目录中。
例如,我想在当前目录bar1中用名称中的单词“ foo”链接所有文件,该目录不具有扩展名“ .cc”,并将符号链接放置在目录bar2中。
我想知道在LINUX bash中是否有单行命令可以完成此任务。
假设您位于包含目录bar1
和bar2
目录中:
find bar1 -name '*foo*' -not -type d -not -name '*.cc' -exec ln -s $PWD/'{}' bar2/ \;
尝试这个:
cd bar1
find . -maxdepth 1 -name '*foo*' -not -name '*.cc' -exec echo ln -s $PWD/{} ../bar2 \;
对空运行感到满意后,请从命令中删除echo
并使其真正运行。
使用扩展的glob很容易处理:
shopt -s extglob
cd bar2
ln -s ../bar1/foo!(*.cc) .
如果您真的想要全部放在一行上,请使用命令分隔符:
shopt -s extglob; cd bar2; ln -s ../bar1/foo!(*.cc) .
这两个例子是相同的,但第一个例子更容易阅读。
从技术上讲,这不算单行答案...但是可以将其粘贴到单个实例中,并且应该执行您想要的操作。
list=`ls | grep foo | grep -v .cc`;for file in $list;do ln $file /bar2/;done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.