Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 通过删除部分原始名称在bash中重命名文件_Regex_Bash_File - Fatal编程技术网

Regex 通过删除部分原始名称在bash中重命名文件

Regex 通过删除部分原始名称在bash中重命名文件,regex,bash,file,Regex,Bash,File,刚从bash开始,我就遇到了一个小问题 我有一个目录,其中有几个zip文件,如: 102-123.zip 54-458.zip 1566-akka.zip 我想制作一个bash脚本来删除zip名称中的XXX-以便: 123.zip 458.zip akka.zip 我从一本书开始 for fName in /mydirectory/* do mv fname newfname done 我试着从正则表达式开始,但我要做的事情非常复杂 你知道我能做什么吗?使用重命名你可以做: ren

刚从bash开始,我就遇到了一个小问题

我有一个目录,其中有几个zip文件,如:

102-123.zip
54-458.zip
1566-akka.zip
我想制作一个bash脚本来删除zip名称中的XXX-以便:

123.zip
458.zip
akka.zip
我从一本书开始

for fName in /mydirectory/*
do
    mv fname newfname
done
我试着从正则表达式开始,但我要做的事情非常复杂


你知道我能做什么吗?

使用
重命名
你可以做:

rename 's/^[^-]+-//' *.zip
如果
rename
实用程序不可用,请使用:

for f in *.zip; do
   mv "$f" "${f#*-}"
done

使用
重命名
可以执行以下操作:

rename 's/^[^-]+-//' *.zip
如果
rename
实用程序不可用,请使用:

for f in *.zip; do
   mv "$f" "${f#*-}"
done

如果要在子目录中递归重命名,请使用
find

find . -type f -name '*.zip' -print0 | xargs -L 1 -0 bash -c 'mv "$1" "${1#*-}"' \;

如果要在子目录中递归重命名,请使用
find

find . -type f -name '*.zip' -print0 | xargs -L 1 -0 bash -c 'mv "$1" "${1#*-}"' \;