如何在提供命令行参数时忽略目录和某些模式

时间:2014-03-20 09:35:46

标签: linux bash shell unix file-io

我是Linux的新手,我想知道是否有一个'one-liner'命令允许我将目录中的所有内容链接到另一个目录,但忽略源目录中的子目录和某些通配符。

让我们更具体一点......假设我想将/foo/bar/tmp中的所有内容相关联,如...

ln -s /foo/* /bar/tmp/.

...但我想:

  • 忽略/ foo
  • 中的所有子目录
  • 忽略带有通配符的所有文件 runscript*

有关如何执行此操作的任何建议吗?

2 个答案:

答案 0 :(得分:4)

您可以像这样使用find

find /foo -maxdepth 1 -type f ! -name 'runscript*' -exec ln -s {} /bar/tmp/ \;

答案 1 :(得分:0)

这样的东西
cd /bar/tmp
find /foo -maxdepth 1 -a -type f -a \! -name 'runscript*' |
while read file; do
   ln -s "$file"
done

可以做到这一点。