it-swarm.com.de

Benennen Sie alle TXT-Dateien in Unterordnern mit "find" um

Ich möchte alle .txt Dateien in einem Ordner umbenennen. Diese Umbenennung benennt alle .txt für mich um:

rename 's/\.txt//g' *.txt -v

aber wenn ich mit alle unterordner umbenennen will

find ./ -type d -execdir rename 's/\.txt//g' *.txt -v ";"

Es zeigt mir:

Can't rename *.txt *: No such file or directory
Can't rename *.txt *: No such file or directory
...

Auch find ./ -type -d zeigt mir die aktuellen und alle Unterordner korrekt an.

Warum habe ich die Nachricht No such file or directory?

3
ICE

Sie müssen die Syntax von find _-exec_ korrekt verwenden und _'{}'_ verwenden, um die gefundenen Dateien darzustellen

_find ./ -type d -name '*.txt' -execdir rename -n 's/\.txt//g' '{}' \;
_

Entfernen Sie _-n_ nach rename, nachdem Sie es getestet haben.

(Angenommen, Sie wollten wirklich die Verzeichnisnamen und nicht die regulären Dateinamen ändern. Wenn dies der Fall ist, verwenden Sie _-type f_ anstelle von _type -d_)

6
Zanna