いくつかのディレクトリを除くすべてのディレクトリのファイルを一覧表示するシェルスクリプトの作成

いくつかのディレクトリを除くすべてのディレクトリのファイルを一覧表示するシェルスクリプトの作成

サブディレクトリも含む各ディレクトリのファイルを一覧表示したいと思います。ディレクトリ内では、複数のディレクトリを無視する必要があり、親ディレクトリでも子ディレクトリでもかまいません。以下のスクリプトでは、別のディレクトリを繰り返すことなく、1つのディレクトリ内のファイルのみを一覧表示できます。この問題を解決する方法を教えてください。

私が試したスクリプト

#!/bin/sh
find * -type d | while IFS= read d; do
    dirname=`basename $d`
        if [ ${dirname} != "Decommissioned" ]; then
          cd $dirname
          find * ! -name . -prune -type f | while read fname; do
             fname=`basename $fname`
             echo $fname
          done
        else
           continue
        fi
done

ベストアンサー1

すべての一般ファイルを一覧表示し、次のディレクトリのファイルをスキップしたい場合引退、あなたはします:

find . -name Decommissioned -type d -prune -o -type f -print

GNUのデフォルト名のみを使用するには。またはPOSIXlyにfind置き換えることもできます。-print-printf '%f\n'

find . -name Decommissioned -type d -prune -o -type f -exec sh -c '
  for file do;
    printf "%s\n" "${file##*/}"
  done' sh {} +

または、すべてのファイル名に改行文字が含まれていないことを保証できる場合:

find . -name Decommissioned -type d -prune -o -type f -print |
  awk -F / '{print $NF}'

おすすめ記事