[英]Regex to rename all files recursively removing everything after the character “?” commandline
[英]How to rename all files in a folder removing everything after space character in linux?
你好,我不能很好地使用正常的表达式,这是我在互联网上搜索的一整天。 我有一个包含许多图片的文件夹:
我正在使用Mac OS X,但我也可以尝试使用Ubuntu,我想为bash创建一个脚本,在第一个空格之后删除所有字符,以获得这样的解决方案:
对于文件夹中的所有文件。 任何帮助表示赞赏。 问候
使用纯BASH:
f='50912000 Bicchiere.jpg'
mv "$f" "${f/ *./.}"
或者使用find
修复所有文件:
find . -type f -name "* *" -exec bash -c 'f="$1"; s="${f/_ / }"; mv -- "$f" "${s/ *./.}"' _ '{}' \;
使用sed,
sed 's/ .*\./\./g'
注意之前的空间.*
您可以使用find和小脚本的组合。
prompt> find . -name "* *" -exec move_it {} \;
mv "./50912000 Bicchiere.jpg" ./50912000
mv "./50913714 Sottobottiglia Bernini.jpg" ./50913714
prompt> cat move_it
#!/bin/sh
dst=`echo $1 | cut -c 1-10`
# remove the echo in the line below to actually rename the file
echo mv '"'$1'"' $dst
rename 's/.*\s+//' *files
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.