ファイル拡張子を削除して同じ名前のファイルを検索するには、basenameを使用します。

ファイル拡張子を削除して同じ名前のファイルを検索するには、basenameを使用します。

デフォルトでは、/test/.などの一部のファイルには1つのバージョンがあり、他のファイルには1つのバージョンしかありません。.doc.pdf.pdf.doctest.doctest.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

おすすめ記事