Ich versuche, eine Datei mit find
einem Befehl umzubenennen.
Ich versuche, Datei A in Datei 10 umzubenennen.
Dazu habe ich zuerst den folgenden Befehl ausprobiert:
sps@sps-Inspiron-N5110:~$ find ~ -type f -name test-a -exec mv test-10 '{}' ';'
mv: cannot stat `test-10': No such file or directory
sps@sps-Inspiron-N5110:~$
Dann habe ich Folgendes versucht:
sps@sps-Inspiron-N5110:~$ find ~ -type f -name test-a -exec mv test-a test-10 '{}' ';'
mv: target `/home/sps/test-a' is not a directory
sps@sps-Inspiron-N5110:~$
Jetzt weiß ich nicht, wie ich das mit machen soll find
. Ich versuche es mit , weil ich viele Verzeichnisse mit demselben Dateinamen haben werde und ich alle mit einem Befehl in find
ändern möchte . Kann mir jemand einen Vorschlag machen?test-a
test-10
Danke.
Antwort1
Die Syntax von mv
ist mv <source> <target>
, daher sollte der endgültige ausgeführte Befehl find
wie folgt aussehen:
mv test-a test-10
Die erste Vermutung wäre also, es mit Folgendem zu versuchen:
find ~ -type f -name test-a -exec mv {} test-10 \;
Dies schlägt jedoch fehl, da {}
es auf den vollständigen Pfad erweitert wird und mv
immer noch im aktuellen Verzeichnis ausgeführt wird, was dazu führt, dass alle Dateien in Ihr aktuelles Verzeichnis verschoben und überschrieben werden. Um dies zu vermeiden, können Sie -execdir
so verwenden, das mv
in dem Verzeichnis ausgeführt wird, in dem die Datei gefunden wurde:
find ~ -type f -name test-a -execdir mv {} test-10 \;
Oder, da der Dateiname immer derselbe ist:
find ~ -type f -name test-a -execdir mv test-a test-10 \;