首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将包含10000个文件的目录拆分为2个目录

将包含10000个文件的目录拆分为2个目录
EN

Stack Overflow用户
提问于 2021-12-08 12:13:26
回答 2查看 170关注 0票数 -2

我有目录/logos,它包含大约10000个png图像。您能建议一些脚本来创建两个新文件夹/logos-1/logos-2,每个文件夹中有来自初始文件夹的一半图像吗?

提前谢谢<3

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-08 12:22:53

一种方法可以是迭代文件夹中的文件,保存、计数和移动它们在每次迭代中的另一个目录:

代码语言:javascript
复制
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命令看起来合适,请删除回显。

票数 2
EN

Stack Overflow用户

发布于 2021-12-08 14:35:44

您可以使用renamePerl renameprename就是这么做的。我假设您不需要前面的斜杠,也不需要在根目录中工作--如果需要,就把它们放回去。

代码语言:javascript
复制
rename --dry-run -p -N 01 '$_ = join "", "logos-", $N++%2+1, "/$_"' *.png 

样本输出

代码语言:javascript
复制
'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中)。

您可能会发现这种可供选择的写作方式更容易:

代码语言:javascript
复制
rename --dry-run -N 01 '$_ = sprintf("logos-%d/$_", $N%2+1)' *.png

使用这个工具会带来几个好处:

如果多个输入重命名为相同的输出,则可以计算任何替换,如不需要创建

  • ,则不会重击多个输入。

在macOS上,使用自制并通过以下方式安装:

代码语言:javascript
复制
brew install rename
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70274826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档