GNU/Linux >> Tutoriales Linux >  >> Linux

Encuentre archivos con caracteres de Windows ilegales en el nombre en Linux

Esta búsqueda de una sola línea debería funcionar para usted:

find . -name "*[<>:\\|?*]*" -exec bash -c 'x="{}"; y="$(sed "s/[<>:\\|?*]\+/-/g" <<< "$x")" && mv "$x" "$y" ' \;

Ninguna de las respuestas anteriores encuentra archivos o directorios que terminaron en espacio (' ') o punto/punto ('.') que tampoco son visibles con la API de Win32.

Agregando a la respuesta de .e.g @falsetru, uno podría hacer

find . -name '*[<>:/\\|?*]*' -o -name '*[ \.]'

El patrón fnmatch le permite especificar los caracteres en [] como sigue:

find . -name '*[<>:/\\|?*]*'

Linux
  1. Encuentra archivos y directorios en Linux con el comando de búsqueda

  2. Encuentra los archivos y directorios más grandes en Linux

  3. Cómo encontrar archivos con el comando fd en Linux

  4. Encuentra todos los archivos con un nombre que contenga una cadena

  5. Cómo eliminar un archivo con este nombre en Linux:-]???????q

Cómo encontrar archivos en Linux con el comando Buscar

Comando Find de Linux con ejemplos prácticos

Cómo encontrar archivos usando la línea de comandos en la terminal de Linux

Cómo encontrar archivos con el comando fd en Linux

Tutorial de comando de búsqueda de Linux (con ejemplos)

Usando el comando tr en Linux para jugar con personajes