Shell 重命名后将子目录文件移动到父目录的脚本
Shell script to move sub-sub directory file to parent after renaming
我想编写一个 shell 脚本,它将文件放在父目录中以避免不必要的导航和更有意义的文件名。例如
实际:
test-2
Chrome_68
errors
1.png
test-5
Chrome_68
errors
1.png
test-10
Chrome_68
errors
1.png
test-11
Chrome_68
errors
1.png
预计:
test-2
test-2.png
test-5
test-5.png
test-10
test-10.png
test-11
test-11.png
尝试过的代码:
testDir=/tmp/screenshots
find $testDir -name *.png
find $testDir -mindepth 1 -type f -print -exec mv {} . \;
find . -type d -name Chrome_68 -exec rm -f {} \;
find . -type d -name errors -exec rm -f {} \;
这里我要删除 sub1 和 sub2 目录,并根据其父文件夹名称重命名将 1.png 移到顶部。另请注意,Chrome_68 和错误也可以使用不同的名称。任何人都可以建议编写 shell 脚本来实现此目的的简单方法吗?
有别名:
prename -n 's|(test-.*)/Chrome_68/errors/[0-9]+|/|' test-*/Chrome_68/errors/1.png
输出:
test-10/Chrome_68/errors/1.png renamed as test-10/test-10.png
test-11/Chrome_68/errors/1.png renamed as test-11/test-11.png
test-2/Chrome_68/errors/1.png renamed as test-2/test-2.png
test-5/Chrome_68/errors/1.png renamed as test-5/test-5.png
如果输出没问题,删除-n
,然后使用rm -r test-*/Chrome_68/
。
我想编写一个 shell 脚本,它将文件放在父目录中以避免不必要的导航和更有意义的文件名。例如
实际:
test-2
Chrome_68
errors
1.png
test-5
Chrome_68
errors
1.png
test-10
Chrome_68
errors
1.png
test-11
Chrome_68
errors
1.png
预计:
test-2
test-2.png
test-5
test-5.png
test-10
test-10.png
test-11
test-11.png
尝试过的代码:
testDir=/tmp/screenshots
find $testDir -name *.png
find $testDir -mindepth 1 -type f -print -exec mv {} . \;
find . -type d -name Chrome_68 -exec rm -f {} \;
find . -type d -name errors -exec rm -f {} \;
这里我要删除 sub1 和 sub2 目录,并根据其父文件夹名称重命名将 1.png 移到顶部。另请注意,Chrome_68 和错误也可以使用不同的名称。任何人都可以建议编写 shell 脚本来实现此目的的简单方法吗?
有别名:
prename -n 's|(test-.*)/Chrome_68/errors/[0-9]+|/|' test-*/Chrome_68/errors/1.png
输出:
test-10/Chrome_68/errors/1.png renamed as test-10/test-10.png test-11/Chrome_68/errors/1.png renamed as test-11/test-11.png test-2/Chrome_68/errors/1.png renamed as test-2/test-2.png test-5/Chrome_68/errors/1.png renamed as test-5/test-5.png
如果输出没问题,删除-n
,然后使用rm -r test-*/Chrome_68/
。