jl6*_*jl6 8 script file-management shell file-transfer
我有大量的小文件 f,按目录结构排列,如下所示:
/A/B/C/f
A级有11个目录,B级每个目录约100个,C级每个目录约30个,每个目录有一个文件f。
如何将所有文件上移一层?例如,给定这组文件......
/A/B/C/f1
/A/B/C/f2
/A/B/C/f3
/A/B/C/f4
我希望目录/A/B/包含 4 个文件,f1 到 f4。不需要删除目录 C。
我希望这是一个解决问题,可能涉及find,xargs和whatnot。有任何想法吗?
干杯,
詹姆士
使用 GNU find(在 Linux 上可以找到)或任何其他支持-execdir以下内容的find 非常简单:
find A -type f -execdir mv -i {} .. \;
Run Code Online (Sandbox Code Playgroud)
有一个标准find:
find A -type f -exec sh -c 'mv -i "$1" "${1%/*}/.."' sh {} \;
Run Code Online (Sandbox Code Playgroud)
使用 zsh:
zmv -Q -o-i 'A/(**/)*/(*)(.)' 'A/$1$2'
Run Code Online (Sandbox Code Playgroud)
如果目录结构始终具有相同的嵌套级别,则不需要任何递归遍历(但首先删除空目录):
for x in */*; do; echo mv -i "$x"/*/* "$x"/..; done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11862 次 |
| 最近记录: |