Linuxでドット「.」で始まるファイルをコピーから除外する方法は?

Linuxでドット「.」で始まるファイルをコピーから除外する方法は?

私はあるディレクトリから別のディレクトリにファイルをコピーするためにSOのいくつかのスレッドに従いました。私は私の目的のためにinotifywaitを使用しており、1つのシナリオを除くすべてのシナリオで完全に動作します。また、不要なDOTプレフィックス(.tmp.swpなど)で始まるファイルをコピーします。

これを試しましたが、-jsonサフィックス付きのファイルもコピーされませんでした。私は.tmp.abcd-jsonコピーしたくありません。&&以下を含むすべてのアイテムをコピーして小切手を削除した場合.tmp.abcd-json

以下はディレクトリの一部です。これは.tmp必須ではありませんが、常に始まると保証されるわけではありません。無視する必要があるプレフィックスでランダムに始まる.tmp他のファイルも見たことがあります。.

abcd-json .tmp.abcd-json

#!/bin/sh
dir=/var/lib/docker/containers
target=/var/log/splunkf
inotifywait -m -r "$dir" --format '%w%f' -e create -e modify  \
| while read file;
        do
                if [[ $file == "-json"* ]] && [[ $file != "."* ]];
                then
                    echo Copying  $file to $target
                    cp -- "$file" "$target";
                else
                    echo NOT Copying  $file to $target
                fi
        done

ベストアンサー1

RegExファイルを一致させることができますいいえdotあなたの状況から始めてif

while read file;
        do
          f="$(basename -- $file)"
          if ! [[ "$f" =~ ^\. ]];
          then
             echo Copying  $file to $target
             cp -- "$file" "$target";
          else
             echo NOT Copying  $file to $target
          fi

おすすめ記事