フォルダ内のファイルをフォルダ内のファイル.docx
に再帰的に変換したいと思います。.doc
問題は、すべての出力ファイルがソースファイルの場所ではなく、次のコマンドを実行するフォルダに作成されることです。
find -type f -name "*.docx"-exec libreoffice --convert-to doc {} \;
libreoffice
findはコマンドにソースファイルを提供し、出力は明らかに現在の場所になければならないことを知っています。それでは、コマンドを使用してフォルダを繰り返し繰り返し、ファイルが見つかった場所でコマンドを実行するにはどうすればよいですか?初期よりは?
ベストアンサー1
-execdir
あなたがそれをサポートしているなら、それが目的ですfind
。 LinuxシステムのデフォルトのGNUにはfind
この機能があります。からman find
:
-execdirコマンド;
-execdir コマンド{} +
-execに似ていますが、指定されたコマンドは通常、検索を開始したディレクトリではなく、一致するファイルを含むサブディレクトリで実行されます。 [。 。 。 ]
だからあなたは以下が欲しい:
find . -type f -name "*.docx" -execdir libreoffice --convert-to doc {} \;
ファイル名は各インスタンスに挿入されます{}
。-exec
使用する場合{}
から始まる相対パスが含まれます./
。-execdir
使用する場合は、{}
ファイル名のみを使用してください。