ファイルがロードされると、そのファイルの_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