Unterschied in der CLI-Suche zwischen Debian und MacOS

0

Ich bin gerade von mDebian auf macOS umgezogen, nachdem mein Laptop abgestürzt war. Glücklicherweise war ich in der Lage, meine .zshrc-Datei mit meinen Aliasnamen zu retten, aber m zwei Aliase, die "find" verwenden, scheinen in macOS nicht zu funktionieren, und ich bin mir nicht ganz sicher, was der Unterschied ist.

Der erste Befehl soll alle Dateien von msubdirectories in das aktuelle Verzeichnis verschieben und hat unter debian einwandfrei funktioniert:

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

Unter macOS erhalte ich jedoch die Meldung "find: illegal option - t".

Ebenso habe ich zum Ändern der Dateiendung von JPG zu JPG verwendet

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

was zu einem anderen "find: illegal option - n" führt

Leider ist der Fehler eher rätselhaft, sodass ich nicht einmal weiß, wo ich anfangen soll, nach einer Lösung zu suchen, da alle Griffe menschenbezogen korrekt zu sein scheinen.

Jede Info oder Hinweis wäre sehr dankbar!

Vielen Dank

user772111
quelle

Antworten:

1

für mup, findbraucht ein pathArgument:

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

für jprn, findbraucht ein pathArgument. Außerdem gibt es renamein macOS keinen Befehl (Sie können ihn jedoch mit Homebrew installieren ). Das ist das Beste, was ich mir im Moment vorstellen kann:

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

${f/%JPG/jpg}Substitute, $fdie JPGmit enden jpg, finden Sie im letzten Teil des Abschnitts "Parametererweiterung" in man zshexpn.

mtklr
quelle
1
Ich empfehle die Verwendung von ... -print0 | while IFS= read -r -d '' f; do ..., um Probleme zu vermeiden, wenn Dateinamen Leerzeichen und andere lustige Zeichen enthalten (wie sie unter macOS üblich sind). Siehe BashFAQ # 20: Wie kann ich Dateinamen finden und sicher handhaben, die Zeilenumbrüche, Leerzeichen oder beides enthalten?
Gordon Davisson