任何帮助都将不胜感激!
我需要一种方法将父目录名附加到任何路径中的任何文件。
当前目录树示例
/Hawaii/Surfing/800x600/picture1.jpg
/Hawaii/Surfing/800x600/picture2.jpg
/Hawaii/Surfing/800x600/picture3.jpg
/RockClimbing/SouthAfrica/TableMountain/4096x2160/Picture1.jpg
/RockClimbing/SouthAfrica/TableMountain/4096x2160/Picture2.jpg
/RockClimbing/SouthAfrica/TableMountain/4096x2160/Picture3.jpg
目标
/Hawaii/Surfing/800x600/picture1.800x600.jpg
/Hawaii/Surfing/800x600/picture2.800x600.jpg
/Hawaii/Surfing/800x600/picture3.800x600.jpg
/RockClimbing/SouthAfrica/TableMountain/4096x2160/Picture1.4096x2160.jpg
/RockClimbing/SouthAfrica/TableMountain/4096x2160/Picture2.4096x2160.jpg
/RockClimbing/SouthAfrica/TableMountain/4096x2160/Picture3.4096x2160.jpg
我发现了一些这样的例子,但是用户都设置了目录深度不幸的是我有很多不同级别的文件。
find dir -name *.jpg -exec rename -nv -- 's|/(.*)/(.*)$|/$1/$1.jpg|' {}
最佳答案
第一个捕获组匹配最后一个/
之前的所有内容,而不仅仅是最后一个目录名。使用/([^/]*)/
而不是/(.*)/
,这样它就不会在/
分隔符之间匹配。您也不会将文件名拆分为名称和扩展名,因此不会在它们之间插入目录名。
find dir -name *.jpg -exec rename -nv -- 's|([^/]*)/([^/]*)\.jpg$|$1/$2.$1.jpg|' {} +
关于linux - 递归查找,它将目录名附加到任何文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50729908/