abh*_*air -1 unix shell rename
我当前的工作目录中有 3 个文件,如下所示:
abc def xyz.tgz
ghi jkl xyz.tgz
def klm zxc.tgz
Run Code Online (Sandbox Code Playgroud)
我希望重命名文件,以便将空格替换为下划线。为了实现这一点,我使用了以下方法:
rename -v 's/\ /_/g' *tgz
Run Code Online (Sandbox Code Playgroud)
以下是问题:
当目录只包含一个tgz文件时,出现如下错误:
rename: not enough arguments
Run Code Online (Sandbox Code Playgroud)如果我使用以下内容:
rename " " "_" *.tgz
Run Code Online (Sandbox Code Playgroud)
仅出现一次空格被下划线替换。
Your system seems to provide the other rename, which doesn't support Perl's substitution. You can still use it:
while ls *' '*tgz &> /dev/null ; do
rename ' ' _ *' '*tgz || break
done
Run Code Online (Sandbox Code Playgroud)
Or just use mv with parameter expansion:
for file in *' '*tgz ; do
mv "$file" "${file// /_}"
done
Run Code Online (Sandbox Code Playgroud)