(元の場所ではなく)場所と一致するフォルダ内のファイルに対して繰り返しコマンドを実行します。

(元の場所ではなく)場所と一致するフォルダ内のファイルに対して繰り返しコマンドを実行します。

フォルダ内のファイルをフォルダ内のファイル.docxに再帰的に変換したいと思います。.doc問題は、すべての出力ファイルがソースファイルの場所ではなく、次のコマンドを実行するフォルダに作成されることです。

find -type f -name "*.docx"-exec libreoffice --convert-to doc {} \;

libreofficefindはコマンドにソースファイルを提供し、出力は明らかに現在の場所になければならないことを知っています。それでは、コマンドを使用してフォルダを繰り返し繰り返し、ファイルが見つかった場所でコマンドを実行するにはどうすればよいですか?初期よりは​​?

ベストアンサー1

-execdirあなたがそれをサポートしているなら、それが目的ですfind。 LinuxシステムのデフォルトのGNUにはfindこの機能があります。からman find

-execdirコマンド;

-execdir コマンド{} +

-execに似ていますが、指定されたコマンドは通常、検索を開始したディレクトリではなく、一致するファイルを含むサブディレクトリで実行されます。 [。 。 。 ]

だからあなたは以下が欲しい:

find . -type f -name "*.docx" -execdir libreoffice --convert-to doc {} \;

ファイル名は各インスタンスに挿入されます{}-exec使用する場合{}から始まる相対パスが含まれます./-execdir使用する場合は、{}ファイル名のみを使用してください。

おすすめ記事