ドライブには、.odt拡張子の付いたドキュメントがたくさんあります。例:
ただし、多くのドキュメントを閲覧すると、.odtが邪魔になります。
それで、私はこのスクリプト(removeODT.sh)をなんとか書きました:
#!/bin/bash
for file in *.odt
do
mv "$file" "${file%.odt}"
done
これにより、スクリプトを実行するディレクトリ内の.odtファイルから.odt拡張子が削除されます。
例えば〜/ Desktop/MyDocumentsでターミナルを開き、入力します
sh /home/user1/BashScripts/removeODT.sh
これにより、MyDocumentsのすべてのファイルから.odt拡張子が削除されます。
しかし、拡張子を削除した後、他のオペレーティングシステムでファイルを使用できず、loook
を使用してドキュメントの内容を検索することもできません。
そのため、必要に応じて.odt拡張子を追加する2番目のスクリプト(addODT.sh)を作成しました。
#!/bin/bash
for file in *
do
mv "$file" "${file%}.odt"
done
今、私がしたいのは、これらのスクリプトが、現在のように単一のディレクトリだけでなく、指定された親ディレクトリとそのすべてのサブディレクトリ内のすべてのドキュメントを変更することです。
例えば「ドキュメントとそのすべてのサブフォルダー内のファイルから.odt拡張子を削除する」
これにより、フォルダごとにスクリプトを個別に実行しなくても、単一のスクリプトですべてのファイルを変更できます。しかし、私はこれにかなり慣れていないので、どうやってそれを行えばいいのか分かりません。
追伸理想的な解決策は、Nautilusで.odt拡張子を非表示にすることですが、私が知る限りそれは不可能です。
find
を使用して、ディレクトリを再帰的にウォークできます。
find -type f -exec mv {} {}.odt \;
拡張機能を削除すると、さらに問題が発生します。
find -name '*.odt' -exec bash -c 'f={}; mv "$f" "${f%.odt}"' \;
ただし、スクリプトを作成して拡張機能を削除し、findから呼び出して簡単にすることもできます。
find -name '*.odt' -exec remove_odt.sh {} \;
ご想像のとおり、{}
は各ファイルの名前でexec
に置き換えられ、最後の\;
は実行するコマンドの終了位置を示します。
また、sh
を使用してbash
スクリプトを実行しないでください。sh
とbash
は異なる獣です。