我想通过添加子目录的名称来重命名每个子目录中的文件。按照通过添加父文件夹名称来重命名文件的答案,我尝试了:
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)