-n
フラグは
--行動しない
アクションなし:名前が変更されるファイルを表示します。
したがって、変更がなければ正常です。
あなたのコマンドに関して、それは私のために働いています:
$ touch "a @ test"
$ ls
a @ test
$ rename -n 's/ |\$|@/_/g' *
a @ test renamed as a___test
シェルによっては、 |
をエスケープする必要があるかもしれません$ rename -n 's/ \|\$\|@/_/g' *
または、 […]
を使用できます グループ文字への表記:
$ rename -n 's/[ @\$]/_/g' *
次のように試すことができます:
for file in ./*Block*
do echo mv "$file" "${file//[ ()@$]/_}"
done
結果に満足したら、echo
を削除します mv
より前 実際にファイルの名前を変更します。
特殊文字とドイツ語の特殊文字を削除し、それらを普遍的なものに置き換えて有用な情報を削除しないようにするためのハンサムなスクリプトを探しています。スクリプトの最後のバージョンを更新しましたが、いくつかのマイナーな問題が発生しました:
#!/bin/bash
for file in ./*
do
infile=`echo "${file:2}"|sed \
-e 's|"\"|"\\"|g' \
-e 's| |\ |g' -e 's|!|\!|g' \
-e 's|@|\@|g' -e 's|*|\*|g' \
-e 's|&|\&|g' -e 's|]|\]|g' \
-e 's|}|\}|g' -e 's|"|\"|g' \
-e 's|,|\,|g' -e 's|?|\?|g' \
-e 's|=|\=|g' `
outfileNOSPECIALS=`echo "${file:2}"|sed -e 's|[^A-Za-z0-9._-]|_|g'`
outfileNOoe=`echo $outfileNOSPECIALS| sed -e 's|ö|oe|g'`
outfileNOae=`echo $outfileNOoe| sed -e 's|ä|ae|g'`
outfileNOue=`echo $outfileNOae| sed -e 's|ü|ue|g'`
outfileNOOE=`echo $outfileNOue| sed -e 's|Ö|OE|g'`
outfileNOAE=`echo $outfileNOOE| sed -e 's|Ä|AE|g'`
outfileNOUE=`echo $outfileNOAE| sed -e 's|Ü|UE|g'`
outfileNOss=`echo $outfileNOUE| sed -e 's|ß|ss|g'`
outfile=${outfileNOss}
if [ "$infile" != "${outfile}" ]
then
echo "filename changed for " $infile " in " $outfile
mv "$infile" ${outfile}
fi
done
exit
結果:
@don_crissti:Linux には、ファイル名を移動する際の特殊文字の処理に関する独自の問題があるため、彼は infile で hokus-pokus を実行しています。
kernel:NMI watchdog:BUG:soft lockup の後に他のエラーが続く とはどういう意味ですか?
tmux select-pane -LDUR コマンド - 自動循環動作を無効にする