Ich benutze Linux Slackware 14.0, Bash 4.2. Angenommen, ich habe 2 Dateien im Verzeichnis:
bash-4.2$ ls
1.txt 2.txt
Ich möchte sie in .svg umbenennen. Diese Antwort wird akzeptiert und positiv bewertet, daher denke ich, dass sie funktionieren muss. Er benutzte diesen Befehl:
find . -name "*.andnav" -exec rename -v 's/\.andnav$/\.tile/i' {} \;
Also habe ich den analogen Befehl geschrieben, aber er hat einen Fehler ausgegeben:
bash-4.2$ find . -name "*.txt" -exec rename -v 's/\.txt$/\.svg/i' {} \;
rename: not enough arguments
Wenn ich nur die Dateien drucken möchte, funktioniert es:
bash-4.2$ find . -name "*.txt" -print
./1.txt
./2.txt
Ich weiß, dass ich mit einem einfacheren Ansatz umbenennen kann:
bash-4.2$ rename .txt .svg ./*.txt
bash-4.2$ ls
1.svg 2.svg
Aber warum funktioniert der Befehl aus dieser Antwort bei mir nicht?
find . -name '*.txt' -exec rename .txt .svg {} +
info --index-search=-exec find
perl
(was diese Antwort voraussetzt) und die von util-linux (die Sie haben).