sunknudsen Asked: 2022-02-28 06:11:38 +0800 CST2022-02-28 06:11:38 +0800 CST 2022-02-28 06:11:38 +0800 CST 如何重命名目录中所有文件的文件名子集? 772 有以下文件。 test.tar.gz.part00 test.tar.gz.part01 test.tar.gz.part02 … test.tar.gz.part99 需要替换.gz为... 理想情况下不使用Debian 不附带的.lz4依赖项(例如)。rename 感谢您的帮助! linux bash 2 个回答 Voted Best Answer mashuptwice 2022-02-28T06:16:44+08:002022-02-28T06:16:44+08:00 你可以使用rename它。 rename gz lz4 ./*part* 没有rename: for file in ./*part*; do mv "$file" "${file//gz/lz4}"; done Stéphane Chazelas 2022-02-28T06:33:14+08:002022-02-28T06:33:14+08:00 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 作为等价物。
你可以使用
rename
它。rename gz lz4 ./*part*
没有
rename
:for file in ./*part*; do mv "$file" "${file//gz/lz4}"; done
rename
最初是 80 年代非常短perl
的示例脚本。它很短,您可以轻松地将其内联到任何脚本中:
此外
perl
,bash
是另一种语言解释器,通常默认情况下在基于 Debian GNU/Linux 的系统上提供(因为那是 GNU shell)。在那个 shell 中,你可以这样做:作为等价物。