Ignore_loadファイル

Ignore_loadファイル

ファイルがロードされると、そのファイルの_loadファイルを生成する必要があるという要件があります。例:- temp_20180101.txt がロードされると、その temp_20180101.txt_load を作成します。

今後の実行では、_loadディレクトリ内のすべてのファイルを無視して、利用可能な最新のファイルを選択しようとしています。

1つのLinuxコマンドでこれを行う方法を教えてください。

答え1

最初の例(を使用して再帰的にファイルを検索find):

find . -type f -name 'temp_*.txt' -exec sh -c '[ ! -e "$0"_load ]' {} ';' -print

temp_*.txtこれにより、パターンに一致するが関連するファイルがない現在のディレクトリ(またはそれ以下)のすべての一般的なファイル名が出力されますtemp_*.txt_load。その後、そのロードは-exec他のロードの代わりに完了できます-print

2番目の例(よりシンプルで明示的なシェルループ):

for name in ./temp_*.txt; do
    if [ -f "$name" ] && [ ! -e "$name"_load ]; then
        command_to_load "$name"
        touch "$name"_load
    fi
done

これは、現在のディレクトリのファイルのみを表示する明示的なシェルループです。一致する名前が通常のファイルで、関連するファイルが存在しない場合は、_loadいくつかのロードコマンドが呼び出され、ファイルが生成されます。$name_load

人々が使いたいかもしれない

command_to_load "$name" && touch "$name"_load

- ステートメント内のファイルは、ロードがうまくいった場合にのみ生成されifます。_load

関連情報