我有一个包含 3 个子文件夹的文件夹,每个子文件夹包含 6 个文件。每个子文件夹中有 2 个文件,:NOPM
其文件名包含在其中。
我需要创建一个 shell 脚本来检查所有文件夹及其子文件夹。如果有任何带有 的文件名:NOPM
,则应将其从名称中删除。如果存在另一个同名文件,则应将其删除,并将每次交互记录到 log.txt 中。
答案1
find /mydirectory -maxdepth 3 -iname *:nomp* -execdir bash -c 'for f; do base=${f##*/}; mv -- "$f" "${f%/*}/${base//:nomp/whateverYouWant}" && echo $f >> /PATH/log.txt; done' _ {} +
顺便说一句,因为我使用了 execdir 你可能不需要使用 base=${f##*/} 而不是 ${base//:nomp.....} 你可以用“.”替换“base”。