繁体   English   中英

如何在LINUX的另一个目录中有选择地创建指向特定文件的符号链接?

[英]How do I selectively create symbolic links to specific files in another directory in LINUX?

我不确定如何执行此操作,但是我需要在一个目录中为某些文件创建符号链接,然后将符号链接放置在另一个目录中。

例如,我想在当前目录bar1中用名称中的单词“ foo”链接所有文件,该目录不具有扩展名“ .cc”,并将符号链接放置在目录bar2中。

我想知道在LINUX bash中是否有单行命令可以完成此任务。

假设您位于包含目录bar1bar2目录中:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM