对包含文件的所有文件执行tail命令-f

时间:2013-09-16 06:53:03

标签: bash

我想在目录中的所有文件上运行tail -f命令,但该目录中的一个文件除外。有人可以建议我这样做的感谢。

3 个答案:

答案 0 :(得分:9)

       ls | grep -v unwanted | xargs tail -f

答案 1 :(得分:1)

您还可以使用exec标记find来为您提供一个很好的内聚:

find . -maxdepth 1 -type f ! -name unwanted.txt -exec tail -f {} +

如果你想要深入了解当前目录,或者想要通过当前目录和所有子目录进行递归,你也可以使用-maxdepth标志。

您也可以使用-a标志添加其他排除的文件,如下所示:

find . -maxdepth 1 -type f ! -name unwanted.txt -a -type f ! -name unwanted2.txt -exec tail -f {} +

然而,对于大量文件来说,这可能会有点乏味。

答案 2 :(得分:0)

您可以使用bash的extended globbing,例如:

$ shopt -s extglob

$ ll
total 20K
drwxr-xr-x 2 foo foo 4.0K Sep 16 10:15 ./
drwxr-xr-x 5 foo foo 4.0K Sep 16 10:14 ../
-rw-r--r-- 1 foo foo    2 Sep 16 10:15 one
-rw-r--r-- 1 foo foo    2 Sep 16 10:15 three
-rw-r--r-- 1 foo foo    2 Sep 16 10:15 two

$ ll !(three)
-rw-r--r-- 1 foo foo    2 Sep 16 10:15 one
-rw-r--r-- 1 foo foo    2 Sep 16 10:15 two

$ tail *
==> one <==
1

==> three <==
3

==> two <==
2

$ tail !(three)
==> one <==
1

==> two <==
2