GNU/Linux >> Linux の 問題 >  >> Linux

Linux で名前に無効な Windows 文字を含むファイルを検索する

この検索ワンライナーはあなたのために働くはずです:

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

上記の回答のいずれも、Win32 API では表示されないスペース (' ') またはピリオド/ドット ('.') で終わるファイルまたはディレクトリを検出しません。

.e.g @falsetru の回答に追加して、できること

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

fnmatch パターンを使用すると、[] でその文字を指定できます 次のように:

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

Linux
  1. Linuxのfindコマンドの使用–例を使用した使用法

  2. Linux – Linuxで現在の日付のファイルを取得しますか?

  3. Linux の find コマンドを使用してファイルを検索する方法

  1. Linuxで最大のファイルとディレクトリを探す

  2. Linuxで重複ファイルを見つける方法は? fdupesコマンドのヘルプがここにあります!

  3. Windows で Linux の隠しファイルを非表示にする

  1. Linuxでfdコマンドを使用してファイルを検索する方法

  2. Linux ですべてのスパース ファイルを見つける方法

  3. Linuxで.rbで終わるすべてのファイルを見つける方法は?