非常感谢任何帮助!
我需要一种方法将父目录名称附加到任何路径中的任何文件。
当前目录树的示例
left join
目标
/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
答案 0 :(得分:0)
您的第一个捕获组正在匹配最后一个/
之前的所有内容,而不仅仅是最后一个目录名称。使用/([^/]*)/
代替/(.*)/
,因此不会在/
分隔符之间匹配。您也没有将文件名拆分为名称和扩展名,因此您不会在它们之间插入目录名称。
find dir -name *.jpg -exec rename -nv -- 's|([^/]*)/([^/]*)\.jpg$|$1/$2.$1.jpg|' {} +