ワイルドカードから除外するには、findを使用します(*)。

ワイルドカードから除外するには、findを使用します(*)。

ワイルドカードフォルダ名でファイルを検索し、そのワイルドカードフォルダ内のファイル数を数えるbashscriptコマンドがあります。計算から除外するテストフォルダがあります。

これは私の命令です。

echo $(date "+%b %_d")
echo "$today"
sr_today=$(find /mnt/data/project_data/web_collab/mailbox/*/sr_pdf/*.pdf -type f -ls | grep "$today" | wc -l)

メールボックスフォルダには次のファイルがあります。
000000
111111
222222
333333
so on...

000000このfindコマンドから除外したいです。それは可能ですか?どのようなヒントがありますか?

ありがとうございます。

ベストアンサー1

GNUの使用find:

#!/bin/sh

dir='/mnt/data/project_data/web_collab/mailbox/'

sr_today=$(find "$dir" \
             ! -path '*/000000/*' \
             -newermt '12am today' \
             -ipath '*/sr_pdf/*.pdf' |
           wc -l)
  • GNUfindのオプションは-newermtGNUdate -dtouch -dman find-newerXY

  • 最後の-ipath述語は大文字と小文字を区別しないため、*.PDF、*.pDfなどと一致します。残念ながら、sr_pdfディレクトリを一致させるときは大文字と小文字を区別しません。たとえば、一致させたくないSR_PDFサブディレクトリがあり、すべての.pdfファイル拡張子が小文字である-ipathことがわかります-path

    または、大文字と小文字を区別するパスのsr_pdf一致、および大文字と小文字を区別しない*.pdfファイルの一致の場合は、-ipathこの行を次に置き換えます。

      -path '*/sr_pdf/*' \
      -iname '*.pdf' | 

おすすめ記事