Ich mache eine Kopie find
aller Dateien mit einer bestimmten Erweiterung und kopiere sie dann in einen bestimmten Ordner, aber die meisten davon werden überschrieben, weil sie den gleichen Namen haben. Wie kann ich mit einem Linux-Befehl den Pfad der Datei ermitteln und ihn durch den Dateinamen ersetzen?
Im Moment verwende ich diesen Befehl:
find . -name "*.css" | xargs cp -t /folder/AllCssFiles/
Wenn ich also zwei Dateien auf einem bestimmten Pfad habe, wie diesen:
/something/abc/file.css
/anyting/xyz/file.css
Wenn ich den Befehl verwende, sollte ich im Ordner „AllCssFiles“ etwa Folgendes erhalten:
/something/abc/file.css (name of the file)
/anyting/xyz/file.css
Antwort1
Sie können -execdir
und den Befehl rename
1 verwenden .
find ./ -type f -name "*.css" -execdir rename -v "s/search/replace/" {} \;
Wenn Sie nicht sicher sind, können Sie rename
mit verwenden-n
-n, -nono
No action: print names of files to be renamed, but don't rename.
1 Dies ist die Syntax, für die in einigen Debian-basierten Systemen und in anderen perl-rename
aufgerufen wird .rename
prename
perl-rename