ファイル名の「*」を「all」に変更します。

ファイル名の「*」を「all」に変更します。

Unixを使う

Linux tinaroo1.local 3.10.0-693.5.2.el7.x86_64 #1 SMP Fri Oct 20 20:32:50 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

名前に*を含むファイルがいくつかあります。

1000_*_Map_20220926182235.csv
16000_*_48_Result_Lead_20220926200445.csv

"all" renameを使用するために1つのコマンドですべてのファイルの名前を変更する方法*

したがって、これらのファイルは

1000_All_Map_20220926182235.csv
16000_All_48_Result_Lead_20220926200445.csv

ベストアンサー1

Bashシェルの使用(GNU / Linuxインストールで一般的):

for file in ./*\**
do 
  [ -f "$file" ] || continue
  echo mv -- "${file}" "${file/\*/All}"
done

*これは、ファイル名のどこかにアスタリスク()があるファイルを繰り返します。アスタリスクはシェルのワイルドカードなので、他の2文字は他の文字と一致するようにエスケープする必要があります。スター付近。一致する各ファイル名はループに変数として送信されます$file。ループの最初のコマンドは、通常のファイルを扱っていることを確認します。通常のファイル以外の項目はスキップされます。次のコマンドmv---はファイルの名前を変更します。新しいファイル名は bash の引数拡張を使用して生成されます。構文は次のとおりです。最初のアスタリスク文字(実際のアスタリスクと一致するようにエスケープされたもの)をテキストに置き換えますAll

echo何が起こるのかを示すためにループを実行し、echo名前の変更を可能にするために削除します。

奇妙なファイル名を防ぐために、2つのことをしました。

  1. 初期ワイルドカード(元の名前)*\**の前に。を付けると、./すべてのファイル名が;$fileで始まります。したがって、ファイル名はハイフンで始めることができないため、コマンドはそれをオプションとして誤って解釈する可能性があります。././1000_All_Map_20220926182235.csvmv
  2. 「オプションの誤った解釈」の追加保護層としてファイル名を指定する前に、オプションを追加してmvオプションの終わりを通知します。--

おすすめ記事