143文字より長いファイル名の検索コマンドはありますか?

143文字より長いファイル名の検索コマンドはありますか?

まず、背景知識:Synology NASの暗号化されていない共有フォルダを暗号化フォルダに変換しようとしましたが、次のエラーが表示されました。

シノロジーNASエラー

だから問題のファイルを見つけて名前を変更したいと思います。私は次のコマンドを思い出しましたgrepgrep -rle '[^\ ]\{143,\}' *ただし、パスが143文字を超えるすべてのファイルを出力します。

#recycle/Music/TO SORT/music/H/Hooligans----Heroes of Hifi/Metalcore Promotions - Heroes of Hifi - 03 Sly Like a Megan Fox.mp3
...

私が望むのは、分割をgrepして/から検索を実行することです。この問題を解決するための効率的なコマンドのアイデアはありますか(ディレクトリには数十万のファイルを簡単に含めることができます)。

ベストアンサー1

GNU"findutils-default"正規表現構文間隔数量子は提供されません。別の数量子を選択した場合は、GNUでテストを使用{n,m}できます-regex。例:findregextype

find . -regextype posix-extended -regex '.*/[^/]{143,}$'

または

find . -regextype egrep -regex '.*/[^/]{143,}$'

または

find . -regextype posix-basic -regex '.*/[^/]\{143,\}$'

など。エスケープの有無にかかわらず、間隔をサポートするregextypes他の機能がある可能性があります。{n,m}

find結果を別のコマンドにパイプする代わりに、grepこれは改行全体で一致します(つまり、find正規表現スタイルは名前とは異なり、デフォルトでは改行と.一致します)。

おすすめ記事