Shell
如何同時重命名目錄中的多個文件
我有目錄說它
/var/tmp/abc
有4個文件:12345-ram-3e3r5-io9490-89adu9.csv 45434-dam-qwe35-to9490-43adu9.csv 11234-cam-yy3r5-ro9490-85adu9.csv 14423-sam-hh3r5-uo9490-869du9.csv
我想以最短的方式(可能是單行)重命名所有 CSV 文件(查找所有文件並重命名它們):
XXXXX-ram-3e3r5-io9490-89adu9.csv XXXXX-dam-qwe35-to9490-43adu9.csv XXXXX-cam-yy3r5-ro9490-85adu9.csv XXXXX-sam-hh3r5-uo9490-869du9.csv
rename -n 's/(\w+)/XXXXX/' *.csv
-n
開心的時候去掉。
嘗試:
for f in *.csv; do mv -i -- "$f" "XXXXX-${f#*-}"; done
這個怎麼運作:
for f in *.csv; do
*.csv
這將啟動所有文件的循環。
mv -i -- "$f" "XXXXX-${f#*-}"
這會根據需要重命名文件,在覆蓋任何文件之前以互動方式詢問。
done
這標誌著循環的結束。
例子:
$ ls -1 11234-cam-yy3r5-ro9490-85adu9.csv 12345-ram-3e3r5-io9490-89adu9.csv 14423-sam-hh3r5-uo9490-869du9.csv 45434-dam-qwe35-to9490-43adu9.csv $ for f in *.csv; do mv -i -- "$f" "XXXXX-${f#*-}"; done $ ls -1 XXXXX-cam-yy3r5-ro9490-85adu9.csv XXXXX-dam-qwe35-to9490-43adu9.csv XXXXX-ram-3e3r5-io9490-89adu9.csv XXXXX-sam-hh3r5-uo9490-869du9.csv