GNU/Linux >> Znalost Linux >  >> Linux

Najděte v systému Linux soubory s nelegálními znaky systému Windows v názvu

Tato jednolinka by vám měla fungovat:

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

Žádná z výše uvedených odpovědí nenajde soubory nebo adresáře, které končí buď mezerou (' ') nebo tečkou/tečkou ('.'), které také nejsou viditelné pomocí Win32 API.

Přidání odpovědi např. @falsetru by bylo možné

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

fnmatch pattern vám umožní specifikovat znaky v [] následovně:

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

Linux
  1. Použití linuxového příkazu find – Použití s ​​příklady

  2. Jak používat Linuxový příkaz find k hledání souborů

  3. Jak najít všechny řídké soubory v Linuxu

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Najděte všechny soubory s názvem obsahujícím řetězec

  3. Použití find a tar se soubory se speciálními znaky v názvu

  1. Najděte největší soubory a adresáře v Linuxu

  2. Jak najít duplicitní soubory v Linuxu? Nápověda je zde s příkazem fdupes!

  3. Linux – získávání souborů pro aktuální datum v Linuxu?