Copie los archivos enumerados por el comando de búsqueda y cámbiele el nombre con la ruta

Copie los archivos enumerados por el comando de búsqueda y cámbiele el nombre con la ruta

Estoy haciendo una lista findde 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 -execdiry el comando rename1 .

find ./ -type f -name "*.css" -execdir rename -v "s/search/replace/" {} \;

Si no estás seguro, puedes utilizar renamecon-n

  -n, -nono
           No action: print names of files to be renamed, but don't rename.

1 Esta es la sintaxis a perl-renamela que se invoca renameen los sistemas basados ​​en Debian, prenameen unos y perl-renameen otros.

información relacionada