Debian 和 macOS 中 cli“find”命令的区别

Debian 和 macOS 中 cli“find”命令的区别

我的笔记本电脑崩溃后,我刚刚从 mDebian 转移到 macOS。幸运的是,我能够用我的别名挽救我的 .zshrc,但是,使用“find”的两个别名似乎在 macOS 中不起作用,我不太清楚它们的区别是什么。

第一个命令应该将所有文件从 msubdirectories 移动到当前目录,并且它在 debian 上完美运行:

alias mup='find -type f -exec mv {} . \;'

然而在 macOS 上我得到了“find: illegal option -- t”

同样,为了将文件扩展名从 JPG 更改为 jpg,我使用了

alias jprn="find -name '*.JPG' -exec rename "s/.JPG/.jpg/g" \{\} \;"

这会导致另一个“查找:非法选项--n”

不幸的是,这个错误相当神秘,所以我甚至不知道从哪里开始寻找解决方案,因为根据 man 的说法,所有的句柄似乎都是正确的。

任何信息或指点都将不胜感激!

谢谢

答案1

对于mupfind需要一个path参数:

alias mup='find . -type f -exec mv {} . \;'

对于jprnfind需要一个path参数。此外,macOS 中没有rename命令(您可以使用自制不过)。这是我目前能想到的最好的办法:

alias jprn='find . -name "*.JPG" -print | while read -r f; do mv "$f" "${f/%JPG/jpg}"; done'

${f/%JPG/jpg}用替换$f结尾,请参阅 中“参数扩展”一节的最后一部分。JPGjpgman zshexpn

相关内容