So benennen Sie eine Datei mit dem Befehl „Find“ um

So benennen Sie eine Datei mit dem Befehl „Find“ um

Ich versuche, eine Datei mit findeinem 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-atest-10

Danke.

Antwort1

Die Syntax von mvist mv <source> <target>, daher sollte der endgültige ausgeführte Befehl findwie 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 mvimmer 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 -execdirso verwenden, das mvin 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 \;

verwandte Informationen