目录中有多个以前缀fgh
开头的文件,例如:
fghfilea
fghfileb
fghfilec
我想将它们所有重命名为以前缀 jkl
开头。是否有一种单个命令可以代替逐个重命名每个文件?
目录中有多个以前缀fgh
开头的文件,例如:
fghfilea
fghfileb
fghfilec
我想将它们所有重命名为以前缀 jkl
开头。是否有一种单个命令可以代替逐个重命名每个文件?
使用正则表达式,这对我很有效:
我想要将文件重命名为这样:
file0001.txt -> 1.txt
ofile0002.txt -> 2.txt
f_i_l_e0003.txt -> 3.txt
使用正则表达式[a-z|_]+0*([0-9]+.),其中([0-9]+.)是一个分组子字符串,可用于重命名命令。
ls -1 | awk 'match($0, /[a-z|\_]+0*([0-9]+.*)/, arr) { print arr[0] " " arr[1] }'|xargs -l mv
生成:
mv file0001.txt 1.txt
mv ofile0002.txt 2.txt
mv f_i_l_e0003.txt 3.txt
file001abc.txt -> abc1.txt
ofile0002abcd.txt -> abcd2.txt
ls -1 | awk 'match($0, /[a-z|\_]+0*([0-9]+.*)([a-z]+)/, arr) { print arr[0] " " arr[2] arr[1] }'|xargs -l mv
生成:
mv file001abc.txt abc1.txt
mv ofile0002abcd.txt abcd2.txt
警告,小心。
find . -type f -name "*.mkv" | while read fp; do
fd=$(dirname "${fp}");
fn=$(basename "${fp}");
ext="${fn##*.}";
f="${fn%.*}";
new_fp="${fd}/${f}.avi"
mv -v "$fp" "$new_fp"
done;
CodeAPE_fr.properties
形式命名的属性文件重命名为CodeAPE.properties
,并且是在整个目录中进行操作,我做了以下操作:for i in `dir`; do mv $i `echo $i | sed 's/_fr.properties/.properties/g'`; done
for f in "Filename With Spaces"*; do mv "$f" "$(echo $f | sed 's/^Filename With Spaces/FilenameWithNoMoreSpaces/g')"; done
for f in *"Spaces In Middle of Filename"*; do mv "$f" "$(echo $f | sed 's/Spaces In Middle of Filename/FilenameWithNoMoreSpaces/g')"; done
您也可以使用以下脚本。在终端上运行非常容易...
//同时重命名多个文件
for file in FILE_NAME*
do
mv -i "${file}" "${file/FILE_NAME/RENAMED_FILE_NAME}"
done
例子:
for file in hello*
do
mv -i "${file}" "${file/hello/JAISHREE}"
done
这是find
+ sed
+ xargs
解决方案的扩展版本。
cygwin
,无法使所需的perl rename
工作,这是最流行的解决方案(而且我认为它很慢,因为它似乎没有修剪选项?)find
有效地获取文件(带修剪),并具有许多自定义选项。sed
进行正则表达式替换。xargs
将结果导入最终命令。*.js
文件但忽略node_modules
此示例查找文件并显示找到的文件和重命名后的文件。出于安全原因,它现在不会移动任何内容。您必须将echo
替换为mv
。
set -x # stop on error
set -e # verbose mode (echo all commands)
find "." -type f -not \( -path "**/node_modules/**" -prune \) -name "*.js" |
sed -nE "s/(.*)\/my(.*)/& \1\/YOUR\2/p" |
xargs -n 2 echo # echo first (replace with `mv` later)
上述脚本将其转换为:
./x/y/my-abc.js
变成这样:
./x/y/YOUR-abc.js
祝你好运!