Linux
如何重命名目錄中所有文件的文件名子集?
有以下文件。
test.tar.gz.part00 test.tar.gz.part01 test.tar.gz.part02 … test.tar.gz.part99
需要替換
.gz
為… 理想情況下不使用Debian 不附帶的.lz4
依賴項(例如)。rename
感謝您的幫助!
你可以使用
rename
它。
rename gz lz4 ./*part*
沒有
rename
:
for file in ./*part*; do mv "$file" "${file//gz/lz4}"; done
rename
最初是 80 年代非常短perl
的範例腳本。它很短,您可以輕鬆地將其內聯到任何腳本中:
perl -e 'for (@ARGV) { $old = $_; rename $old, $_ if s/\.gz(\.part\d+)\Z/\.lz4$1/s }' -- *.gz.part*
此外
perl
,bash
是另一種語言解釋器,通常預設情況下在基於 Debian GNU/Linux 的系統上提供(因為那是 GNU shell)。在那個 shell 中,你可以這樣做:shopt -s extglob nullglob for file in *.gz.part+([0123456789]); do mv -T -- "$file" "${file%.*.*}.lz4.${file##*.}" done
作為等價物。