
Estoy haciendo una lista find
de todos los archivos con cierta extensión y luego los copio a una carpeta determinada, pero la mayoría se sobrescribe porque tienen el mismo nombre. ¿Cómo puedo, con un comando de Linux, obtener la ruta del archivo y reemplazarla en el nombre del archivo?
Ahora mismo estoy usando este comando:
find . -name "*.css" | xargs cp -t /folder/AllCssFiles/
Entonces, si tengo dos archivos en una ruta determinada como esta:
/something/abc/file.css
/anyting/xyz/file.css
cuando uso el comando debería obtener algo como esto en la carpeta AllCssFiles:
/something/abc/file.css (name of the file)
/anyting/xyz/file.css
Respuesta1
Puedes usar -execdir
y el comando rename
1 .
find ./ -type f -name "*.css" -execdir rename -v "s/search/replace/" {} \;
Si no estás seguro, puedes utilizar rename
con-n
-n, -nono
No action: print names of files to be renamed, but don't rename.
1 Esta es la sintaxis a perl-rename
la que se invoca rename
en los sistemas basados en Debian, prename
en unos y perl-rename
en otros.