我有以下目录树:
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)
有没有人对此有任何想法?
谢谢.
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.