Shell

如何同時重命名目錄中的多個文件

  • December 31, 2021

我有目錄說它/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

引用自:https://unix.stackexchange.com/questions/518800