3

次のディレクトリ ツリーがあります。

books>book(i)>cluster.pir

ここで、book(i) は 1 から 1023 までの一連のサブディレクトリで、それぞれに cluster.pir というフォルダが含まれています。

次の sed コマンド:

sed -i '/>/d' ./*.pir

.pir 拡張子を持つファイルの「>」を含むファイル内の行を削除しますが、これは素晴らしいことですが、私のさまざまな .pir ファイルは独自の book(i) ディレクトリにあります。コマンドがすべてのディレクトリにまたがるようにするにはどうすればよいですか? 私が試してみました:

find ./*.pir -type f -exec sed -i '/>/d' ./*.pir

「book」親ディレクトリから開始すると、次のようになります。

find: missing argument to `-exec'

誰もこれについて何か考えがありますか?

ありがとう。

4

3 に答える 3

10

検索の形式は次のとおりです。

find -exec command {} \;

{} はファイル名に置き換えられます。

編集:あなたの場合、これは次のようになります:

find ./*.pir -type f -exec sed -i '/>/d' {} \;

これにより、すべてのファイルで sed が呼び出されます。

于 2012-12-20T13:25:20.660 に答える
5

ワイルドカードを追加して、すべてのディレクトリにまたがることができます。

sed -i '/>/d' ./book*/*.pir
于 2012-12-20T13:58:07.600 に答える