os x从文件名中删除正斜杠


0

嗨,我想从我的所有文件中删除所有正斜杠,但对主目录中的每个目录递归执行此操作。

我如何修改这个不递归的脚本?

for f in "$1"/*; do
dir="$(dirname "$f")"
file="$(basename "$f")"
mv -- "$f" "${dir}/${file//[^_-0-9A-Za-z.]}"
done

或者更好我想只替换文件名中的正斜杠,但这对于主文件夹中的每个子文件夹都是如此?

问候马克斯

Answers:


0

在BSD层中,正斜杠是路径分隔符。当你遇到一个文件名以正斜杠内核转换前slash- /一个冒号:。因此,finder应用程序中的文件名可能看起来像,foo/bar但在BSD层中看起来像foo:bar

因此,使用目录树find来查找:名称中的文件。然后,使用内联脚本-execdir从文件名中删除冒号(finder应用程序中的正斜杠)。

find . -type f -name '*:*' -execdir bash -c ' for file
    do
        echo mv -- "${file}" "${file//:}"
    done' sh {} \;

这将仅列出mv命令和操作数。如果你觉得输出会给你你想要的结果,那么删除echo

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.