8

ディレクトリ内の1つのファイルを除く、ディレクトリ内のすべてのファイルに対して tail -f コマンドを実行したい。誰かが私にそれを行う方法を教えてもらえますか?

4

3 に答える 3

11
       ls | grep -v unwanted | xargs tail -f
于 2013-09-16T06:55:51.017 に答える
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 {} +

ただし、ファイルの量が増えると、少し面倒になる可能性があります。

于 2013-09-16T07:37:51.920 に答える
0

bash の拡張 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
于 2013-09-16T08:17:07.713 に答える