sed多个目录中的多个文件

bru*_*lin 2 sed

我有以下目录树:

books>book(i)>cluster.pir
Run Code Online (Sandbox Code Playgroud)

其中book(i)是一组子目录1到1023,每个子目录包含一个名为cluster.pir的文件夹.

以下sed命令:

sed -i '/>/d' ./*.pir
Run Code Online (Sandbox Code Playgroud)

对于任何带有.pir ext的文件,将删除包含'>'的文件中的任何一行,这很好,但是我的各种.pir文件都位于他们自己的book(i)目录中.如何让命令跨越所有目录?我试过了:

find ./*.pir -type f -exec sed -i '/>/d' ./*.pir
Run Code Online (Sandbox Code Playgroud)

当在'book'父目录中启动时,我得到:

find: missing argument to `-exec'
Run Code Online (Sandbox Code Playgroud)

有没有人对此有任何想法?

谢谢.

Sjo*_*erd 7

find的格式是:

find -exec command {} \;
Run Code Online (Sandbox Code Playgroud)

其中{}由文件名替换.

编辑:在你的情况下,这将成为:

find ./*.pir -type f -exec sed -i '/>/d' {} \;
Run Code Online (Sandbox Code Playgroud)

这将在每个文件上调用sed.


Sjo*_*erd 5

您可以添加通配符以跨越所有目录:

sed -i '/>/d' ./book*/*.pir
Run Code Online (Sandbox Code Playgroud)