我有一个parentdir
包含许多这样的目录的文件夹:
$ tree parentdir/subdir_1
parentdir/subdir_1
├── important.txt
├── important_001.txt
├── important_002.log
├── important_007.bmp
├── something
├── else.mp3
├── nothing.000
└── ignore.me
我想要的是将名称以开头的所有文件移动important
到父目录parentdir
,并通过在每个文件名前面加上它们来自的子目录的名称来重命名它们。
例如,parentdir/subdir_1/important_001.txt
应该移动/重命名为parentdir/subdir_1-important_001.txt
.
我怎样才能最容易地在一个巨大的目录上执行这个批量移动/重命名操作?
在
parentdir
你可以使用测试后删除
-n
以实际移动和重命名解释
s#old#new#
替换old
为new
\./([^/]+)/(.*)
匹配文字,./
然后保存除 之外的一些字符/
,然后匹配/
,然后保存其余字符$1-$2
两个保存的图案由-
放弃路径分隔符将文件
parentdir
强制移动到事后思考:在这种情况下,您可以更简单地使用
s#/#-#
替换/
为,从一开始就-
省略./