ファイル名から「~」を削除します

ファイル名から「~」を削除します

NAS には制限付きの bash シェルがあり、ファイル名に char を含むファイルが多数あります~。たとえば、 にファイルがあり2018/10/example~1.jpg、それを に移動して名前を変更する必要がありますallFiles/2018-10-example_1.jpg

~を に置き換え、ファイル名にの代わり_に のパスを追加する必要があります。-/

手伝っていただけませんか?

.jpgPS / .png/.mov拡張子のファイルのみ

答え1

私は QNAP を持っていませんが、そのシェルは実際には BusyBox だと思います。これは BusyBox と bash の両方で動作するはずです (ただし、bash の場合は find+cut+awk もインストールする必要があります)。

年ディレクトリ (つまり「2018」) と「allFiles」ディレクトリが同じレベルにあり、そのレベルがシェルの現在の作業ディレクトリであると仮定します。

find . -name '*.jpg' | cut -c3- | awk '{ newname=$0; gsub(/~/, "_", newname); gsub(/\//, "-", newname); gsub(/^/, "allFiles/", newname); print "mv " $0 " " newname; }'

これにより、すべての .jpg ファイルを移動する一連のコマンドが生成されます。まず、コマンドを確認して、それが妥当であることを確認します。次に、上記のコマンドの末尾に「| sh」を追加してコマンドを実行します。

次に、上記の「*.jpg」を、処理したい別のファイル拡張子に置き換えて、繰り返します。

関連情報