我有目录/logos,它包含大约10000个png图像。您能建议一些脚本来创建两个新文件夹/logos-1和/logos-2,每个文件夹中有来自初始文件夹的一半图像吗?
提前谢谢<3
发布于 2021-12-08 12:22:53
一种方法可以是迭代文件夹中的文件,保存、计数和移动它们在每次迭代中的另一个目录:
counter=0
mkdir -p logos-0
mkdir -p logos-1
for file in logos/*
do
[ -e "$file" ] || continue
echo mv "$file" "logos-$((counter++%2))/"
done如果mv命令看起来合适,请删除回显。
发布于 2021-12-08 14:35:44
您可以使用rename。Perl rename和prename就是这么做的。我假设您不需要前面的斜杠,也不需要在根目录中工作--如果需要,就把它们放回去。
rename --dry-run -p -N 01 '$_ = join "", "logos-", $N++%2+1, "/$_"' *.png 样本输出
'1.png' would be renamed to 'logos-2/1.png'
'10.png' would be renamed to 'logos-1/10.png'
'2.png' would be renamed to 'logos-2/2.png'
'3.png' would be renamed to 'logos-1/3.png'
'4.png' would be renamed to 'logos-2/4.png'
'5.png' would be renamed to 'logos-1/5.png'
'6.png' would be renamed to 'logos-2/6.png'
'7.png' would be renamed to 'logos-1/7.png'
'8.png' would be renamed to 'logos-2/8.png'
'9.png' would be renamed to 'logos-1/9.png'如果输出看起来不错,可以删除--dry-run。-p意味着它将为您创建任何必需的目录/路径。如果您不熟悉Perl,这意味着:
“为每个PNG文件设置N=1,创建新名称(我们必须将其存储在特殊变量N=1中)。
您可能会发现这种可供选择的写作方式更容易:
rename --dry-run -N 01 '$_ = sprintf("logos-%d/$_", $N%2+1)' *.png使用这个工具会带来几个好处:
如果多个输入重命名为相同的输出,则可以计算任何替换,如不需要创建
在macOS上,使用自制并通过以下方式安装:
brew install renamehttps://stackoverflow.com/questions/70274826
复制相似问题