我错误地.dcm
在 Mac 上的所有文件上添加了扩展名,导致无法登录 iCloud 并存储我的钥匙链。
我一直想找到一个解决方案来恢复其原始文件扩展名,但我只找到了.abc
用.def
扩展名替换的答案,这不是我想要的。我想删除.dcm
每个文件上添加的所有冗余扩展名。
有没有办法可以删除所有文件上的 .dcm 扩展名(递归)?
这些是我发现的替换文件扩展名的解决方案:
for file in *.abc; do mv "$file" "${file%.abc}"; done
for old in *.abc; do mv $old basename $old .abc.ef; done
它们要么不是递归的,要么 Bash(3.2x)说“错误替换”/“未找到命令”。
答案1
这应该可以做到:
find / -type f -name '*.dcm' -exec sh -c 'mv -- "$0" "${0%.dcm}"' {} \;
命令:
- 递归自
/
- 查找每个名为
*.dcm
- 使用一个参数(文件名)执行一个小的子 shell 调用 (
{}
) $0
…使用以下方法重命名文件 ( )mv
- 删除最短匹配 (
%
)使用.dcm
字符串操作
把一个放在echo
前面mv
看看它会产生什么作用。
如果你不想使用子 shell,你可以通过管道传输到while
:
find / -type f -name '*.dcm' -print0 | while IFS= read -r -d '' filename; do
mv -- "$filename" "${filename%.dcm}"
done