Tak*_*Tak 2 gnome command-line bash nautilus scripts
我有一个主目录,其中有四个文件夹,f1, f2, f3 and f4每个文件夹都有 10 个文件夹,这 10 个文件夹中的每一个ff1...ff10都有一些.jpeg带有一些名称的图像,可以说image1......等等。我想知道的是如何在每个文件夹的 10 个文件夹中的每个文件夹中重命名这些 .jpeg 图像f1, f2, f3 and f4,以便我将其名称开头的父文件夹连接起来,例如image1.jpeg位于f3/ff1然后它的名称将f3_ff1_image1.jpeg与四个主要文件夹中的其他 10 个文件夹中的所有其他图像相同。如果有人可以请告知如何在.sh文件中完成此操作。
使用循环和一些 bash 字符串操作
while read -rd $'\0' f; do
d="${f%/*}"; p="${d/\//_}";
echo mv -- "$f" "${d}/${p}_${f##*/}"
done < <(find -type f -name '*.jpeg' -printf '%P\0')
Run Code Online (Sandbox Code Playgroud)
(echo一旦您确认它与文件正确匹配,就删除它)
使用基于 perl 的rename命令和 bashglobstar
shopt -s globstar
rename -nv -- 's|(f\d+)/(ff\d+)/(image\d+)|$1/$2/$1_$2_$3|' **/*.jpeg
Run Code Online (Sandbox Code Playgroud)
(-nv一旦您确认它与文件正确匹配,就删除它)