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