名前が250文字を超えないすべてのファイルを一覧表示しようとしています(そのファイルが属するディレクトリ、私のコマンドを含む相対パスを含む)。
似たような記事を見たことがあります。 しかし、これはファイルを再帰的にのみリストします。
名前が250文字(相対パスを含む)以下のファイルのみを表示するようにスクリプトを変更する方法についてのアイデアはありますか?
ベストアンサー1
GNUの使用find
:
find . -regextype posix-extended ! -regex '.{253,}' ! -type d
(./
250カウントに含まれていないプレフィックスを印刷してください)。
そしてzsh
:
setopt extendedglob # if not already in your ~/.zshrc
printf '%s\n' **/*~?(#c251,)(D^/)
**/*
これは隠しパス()を含むすべての再帰パス((D)
)ですが、^
タイプ()のパスではありません。目次(/
)、段(~
)は?(#c251,)
251文字以上に一致します。
POSIX的に:
find . ! -path "$(printf %253s | tr ' ' '?')*" ! -type d
(Unixは、ファイル名が有効な文字で構成されることを保証するものではありません。1つを除いて、これらのソリューションは、有効な文字を構成しないバイトシーケンスを含むパスを含むファイルをzsh
報告することもできます。-path '*'
を除外するのに役立ちます)。バイト数量の反対数値C
そのロケールで)を使用してロケールをに変更できますexport LC_ALL=C
。