ディレクトリ内にある、空白のファイル名を変換する
任意のディレクトリにある、空白を含むファイル名をアンスコ(_)やハイフン(-)に変換する方法ですが、ネットでは以下のワンライナーの方法がありました
find . -name "* *" | rename 's/ /_/g'
CentOS 9では、その方法で試しましたが下記のエラーとなりました
$ find . -name "* *" | rename 's/ /_/g' rename: not enough arguments Try 'rename --help' for more information.
ワンライナーの変換方法の記事は2010年代の記事で古いのでrenameコマンドの書式がかわったいてCentOS9では駄目っぽいので、findの結果をmvコマンドでファイル名を変換する方法ならうまくいきました
$ find . -name "* *" -exec bash -c 'mv "$0" "${0// /_}"' {} \;
また、ワンライナーではなくて、シェルスクリプト内で書くなら下記の書き方で変換できます
# 空白を"_"に置換してリネーム IMG_DIR="/home/admin/img/" find ${IMG_DIR} -depth -name "* *" | while read -r file; do newname=$(echo "$file" | tr ' ' '_') mv "$file" "$newname" done
ディスカッション
コメント一覧
まだ、コメントがありません