検索結果から非表示のディレクトリにあるファイルは除外されますが、非表示のファイル(非表示のディレクトリにある)は除外されません。

検索結果から非表示のディレクトリにあるファイルは除外されますが、非表示のファイル(非表示のディレクトリにある)は除外されません。

次のディレクトリ構造を考えると:

$ tree --noreport dir

dir
├── fileA
├── .hiddenfileA
├── .hiddendirA
|   ├── .hiddenfileB
│   ├── fileC
│   └── fileD
└── dirA
    ├── .hiddenfileC
    ├── fileE
    └── fileF

要件は、隠されたディレクトリ内のファイルが結果から除外されますが、隠されたファイル(非表示のディレクトリの下)は含まれないようにfindを呼び出すことです。

予想収益は次のようになります。

./.hiddenfileA
./dirA/.hiddenfileC
./dirA/fileE
./dirA/fileF
./fileA

少し調べて見つけました。こここの情報に基づいて、次の呼び出しを作成しました。find

$ find . -type f -not -path '*/\.*' -print

しかし、このソリューションには欠点があります。隠しディレクトリをスキップします。とファイル

ベストアンサー1

隠しディレクトリをクリーンアップし、結果をファイルに制限します。

find . -type d -name '.?*' -prune -o -type f -print

提案通りゼチル、ディレクトリをフィルタリングしてファイル、リンクなどを表示することをお勧めします。

find . -type d -name '.?*' -prune -o ! -type d -print

おすすめ記事