デフォルトでは、/test/
.などの一部のファイルには1つのバージョンがあり、他のファイルには1つのバージョンしかありません。.doc
.pdf
.pdf
.doc
test.doc
test.pdf
私がしたいことは、発生した状況を見つけて.doc
スクリプトを使用してその状況を削除することです。.pdf
私は次のコード行を修正しました。
find /test/ -name "*.doc" - exec basename {} .doc \; -exec rm {}.pdf \;
ただし、これはfindコマンドから名前付きファイルを削除するexample.doc.pdf
のではなく、指定されたファイルが見つからないというエラーを返します。.pdf
私がこれを試みる理由は、一部のファイルに削除したくない一致ファイルが.pdf
ないためです。.doc
ベストアンサー1
次のコマンドを使用できますfind
。
find /test/ -name "*.doc" -exec sh -c 'a="$1"; rm "${a%.doc}.pdf"' find-sh {} \;
.doc
ディレクトリからファイルを検索します/test/
。見つかった各ファイルに対して、sh
ファイルを引数として使用してシェルが呼び出されます。ファイルが存在する場合は、${a%.doc}.pdf
ファイル拡張子を.doc
次に置き換えて.pdf
削除します。rm