用于批量重命名文件夹中文件的 Shell/Bash 快捷方式
- 2024-10-25 08:42:00
- admin 原创
- 78
问题描述:
Shell/Bash 中是否有快捷方式可以根据正则表达式或其他条件重命名文件夹中的所有文件。我在这里要查找的是文件夹文档,其中包含 100 个文本文件,其命名约定如下:
<longdocumentidentifier>-doc-<counter>.txt.
我需要按照上面给出的约定将所有文件重命名为:
doc-<counter>.txt
是否有一行代码可以帮助我解决上述问题?
解决方案 1:
我建议这样的事情:
for i in *-doc-*.txt; do mv "$i" "${i/*-doc-/doc-}"; done
${i/*-doc-/doc-}
`*-doc-用替换第一次出现的
doc-`。
如果需要进行多次替换(参见注释 1),则需要使用${var//Pattern/Replacement}
变体。如果需要替换名称的开头,则需要使用${var/#Pattern/Replacement}
,如果需要替换结尾(即扩展名),则需要使用 形式${var/%Pattern/Replacement}
。
请参阅Shell 参数扩展了解更多详情。此扩展是 bash 特有的。
解决方案 2:
如果你有的rename
话,rename 's/^.*-doc-/doc-/' *.txt
那么就应该可以了。
解决方案 3:
有prename
,允许您使用 REGEX:
prename 's/^.*-doc-(.*.txt)$/doc-$1/' *.txt
使用该选项-n
进行模拟:
prename -n 's/^.*-doc-(.*.txt)$/doc-$1/' *.txt
注意:这是许多 Linux 发行版中附带的rename
,但不是全部 - 因此我使用 Perl 附带的实用程序的规范名称。
解决方案 4:
如果要递归到子目录,还有:
find . -maxdepth N -type f -name "$pattern" | sed -e 'p' -E -e "s/$str1/$str2/g" | xargs -n2 mv
在自动支持扩展正则表达式的系统上,你可以省略-E
。
优点:
递归到子目录
你可以控制递归的最大深度
您可以重命名文件和/或目录(-type f|d)
缺点:
正则表达式稍微复杂一些,因为你必须去掉路径才能得到文件名
(答案从这里修改)
解决方案 5:
例如,大多数 Linux 中内置的重命名命令可以轻松完成此操作。
就我个人而言,我也更喜欢正则表达式,这就是为什么我随身携带这个脚本很长很长时间(阅读:自 80 年代末或 90 年代初以来):
#!/usr/bin/perl
($op = shift) || die "Usage: $0 expr [files]]
";
if(!@ARGV)
{
@ARGV = <STDIN>;
chop(@ARGV);
}
for (@ARGV)
{
$was = $_;
eval $op;
die $@ if $@;
if ($was ne $_)
{
print "rename($was,$_)
";
rename($was,$_);
}
}
安装后您可以执行如下操作:
script-name 's/.*-doc(.*).txt/doc$1.txt/' *.txt
解决方案 6:
mmv "*-doc-*" "doc-#2"
mmv 命令代表“大规模移动”
解决方案 7:
如果您不介意使用外部工具,那么这里有一个:rnm(网页)
对于您的特定问题,命令将是:
rnm -rs '/.*-doc-/doc-/' *.txt
或者
rnm -rs '/.*-(doc-.*.txt)//' *.txt
您可以在此处找到更多示例/文档。
解决方案 8:
find . -name '*scss' | xargs -L1 -I {} echo {} {} | sed 's/css.scss$/scss/' | xargs -L1 mv
例如如果你有一堆以“.css.scss”结尾的文件,并且你想将它们重命名为仅以“.scss”结尾(即删除.css 部分)
调整正则表达式并找到满足你需求的参数
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件