find files and move


phwert

Erfahrenes Mitglied
#1
Hallo,

ich habe viele praktisch doppelte Files auf dem System, d. h. ein normaler File und ein weiterer File, der genauso heißt, mit einer Tilde am Ende.
Ich will die Tilde-Files aber nicht einfach löschen, sondern mal erst zwischenspeichern, allerdings mit Pfad.

Ich habe einen Befehl, der macht eigentlich das, was ich will, nur der Pfad fehlt noch.

D. h. statt den Pfad von
/home/user/Pfadx/Filename1
mitzunehmen zu
/home/user/TILDE_SIK/home/user/Pfadx/Filename1
wird im Moment nur
/home/user/TILDE_SIK/Filenname1
geschrieben, wodurch natürlich auch teilweise noch Files überschrieben werden.

Wer weiß, wie es geht?

So sieht das Statement momentan aus:
Code:
find /home/user/Pfadx -iname "**.*~" -type f -exec /bin/mv {} /home/user/TILDE_SIK \;
find /home/user/Pfady -iname "**.*~" -type f -exec /bin/mv {} /home/user/TILDE_SIK \;
find /home/user/Pfadz -iname "**.*~" -type f -exec /bin/mv {} /home/user/TILDE_SIK \;
...

Beste Grüße
 

zerix

Hausmeister
Moderator
#2
Hallo,

schau dir mal die Tools readlink, basename und dirname an.


Code:
x=$(readlink ./anyfile) # /any/path/to/anyfile
y=$(dirname $x) # /any/path/to/
z=$(basename $x) # anyfile

Viele Grüße