web-dev-qa-db-fra.com

Recherchez et remplacez les noms de dossier et de fichier avec des caractères incompatibles Windows

Mon disque Ubuntu (18.04) est synchronisé avec un lecteur Windows. Certains de mes noms et noms de fichiers à Ubuntu contiennent des caractères non autorisés dans Windows et cela provoque des problèmes de synchronisation. Je souhaite trouver ces caractères et les supprimer des noms de fichiers/dossiers ou de remplacer ces caractères par un "x". Cela doit être fait de manière récursive sur l'arborescence de dossiers/répertoires.

Comment puis-je faire cela rapidement?

Voici les personnages interdits dans Windows ( modifié à partir de la réponse de Christopher Oezbek ):

< (less than)
> (greater than)
: (colon - sometimes works, but is actually NTFS Alternate Data Streams)
" (double quote)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)
2
JayDin

Essayez rename , vous devez d'abord l'installer.

Sudo apt-get install rename

Vous trouverez ci-dessous un exemple, vous pouvez changer * à l'endroit où votre fichier/dossier situé.

~$ ls
'1<.txt'   3:.txt     '5\.txt'  '7??.txt'
'2>.txt'  '4"d".txt'  '6|.txt'  '8*.txt'

~$ rename -v 's/[?<>\\:*|\"]/x/g' *
1<.txt renamed as 1x.txt
2>.txt renamed as 2x.txt
3:.txt renamed as 3x.txt
4"d".txt renamed as 4xdx.txt
5\.txt renamed as 5x.txt
6|.txt renamed as 6x.txt
7??.txt renamed as 7xx.txt
8*.txt renamed as 8x.txt

~$ ls
 1x.txt   2x.txt   3x.txt   4xdx.txt  '5x.txt'   6x.txt   7xx.txt   8x.txt
2
Liso