小编Jos*_*lin的帖子

“-bash:/usr/bin/rename:参数列表太长”

我想通过添加子目录的名称来重命名每个子目录中的文件。按照通过添加父文件夹名称重命名文件的答案,我尝试了:

rename  's/(.*)\//$1\/$1_/' */*
Run Code Online (Sandbox Code Playgroud)

但是,对于许多子目录,它不起作用。我有 13,000 个子目录,每个子目录包含大约 300 个文件。我得到

-bash: /usr/bin/rename:  Argument list too long
Run Code Online (Sandbox Code Playgroud)

我试过:

ls | xargs rename 's/(.*)\//$1\/$1_/' */*
find . -maxdepth 1 -type f -print0 | xargs rename 's/(.*)\//$1\/$1_/' */*
Run Code Online (Sandbox Code Playgroud)

两者都给出相同的错误:

-bash: /usr/bin/xargs:  Argument list too long
Run Code Online (Sandbox Code Playgroud)

编辑

xargs -L  rename 's/(.*)\//$1\/$1_/' */*
xargs -L1  rename 's/(.*)\//$1\/$1_/' */*
Run Code Online (Sandbox Code Playgroud)

同样的错误:

-bash: /usr/bin/xargs:  Argument list too long
Run Code Online (Sandbox Code Playgroud)

command-line xargs

6
推荐指数
1
解决办法
2701
查看次数

标签 统计

command-line ×1

xargs ×1