GNU/Linux >> Linux の 問題 >  >> Linux

ディレクトリ内の特殊文字とスペースを含むすべてのファイルの名前を変更する方法は?

-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 を実行しています。


Linux
  1. ファイルを検索して tar (スペースを含む)

  2. すべてのファイルをあるディレクトリから別のディレクトリに移動 (および上書き) する方法は?

  3. ディレクトリ内のすべてのファイルで単語のすべての出現を変更する方法

  1. Linuxでスペースと特殊文字を含むファイル名を操作する方法

  2. Linuxですべてのファイルとディレクトリ名を小文字に変更

  3. ソートされた順序でファイルを tar する方法は?

  1. 特定のフォルダ内の特定の拡張子を持つすべてのファイルを削除するにはどうすればよいですか?

  2. chownコマンドでファイルとディレクトリの所有権を変更する方法

  3. ディレクトリ内のファイル サイズがゼロ (0) バイトのすべてのファイルを再帰的に検索する方法