debian和macOS之间cli“find”的区别


0

我的笔记本电脑崩溃后,我刚从mDebian搬到macOS。幸运的是,我用我的别名来挽救我的.zshrc,然而,使用“find”的两个别名似乎在macOS中不起作用,我不太确定它的区别是什么。

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

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

然而,在macOS上,我得到了一个“查找:非法选项 - t”

同样,要将从JPG结尾的文件更改为我使用的jpg

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

导致另一个“发现:非法选项 - n”

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

任何信息或指针将非常感谢!

谢谢

Answers:


1

因为mupfind需要一个path论点:

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

因为jprnfind需要一个path论点。此外,renamemacOS中没有命令(您可以使用Homebrew安装它)。这是我现在能想到的最好的:

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

${f/%JPG/jpg}以... $f结尾的JPG替换jpg,请参阅“参数扩展”部分的最后一部分man zshexpn


1
... -print0 | while IFS= read -r -d '' f; do ...当文件名包含空格和其他有趣的字符(在macOS上很常见)时,我建议使用以避免麻烦。请参阅BashFAQ#20:如何找到并安全地处理包含换行符,空格或两者的文件名?
戈登戴维森
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.