最も古いファイル(FIFO)をディレクトリに移動するコマンドを作成しています。結果を"find"
ディレクトリにパイプする方が良いですか"ls"
、それとも単に " ls
"を使用する方が良いですか?より良いか提案してください。
ls -ltr `/bin/find ${in}/* -prune -name "*.txt" -type f` | head -10 |
while read -r infile ; do
-move the file
done
それとも単に使うべきですか?私が使っている理由は:ls.
スクリプトで避けるべきいくつかのfind
内容をオンラインで読んだからです。ls
しかし、コードの終わりに検索結果をls
。find
ベストアンサー1
しかし、真珠おそらく大きなディレクトリを「x」回繰り返すよりも速いでしょう。これは無差別のシンプルなソリューションです。
外部ループは、移動するファイルの数(この場合は3つ)を決定します。このループでは、「最も古い」ファイルをglobbingによって生成された最初のファイル名で初期化します*
。その後、内部ループは各ファイルのタイムスタンプを比較して、-ot
現在の最も古いファイルより古いかどうかを確認します。その場合は、「最も古い」ファイル名を更新します。内部ループが終わったら、ファイルを報告して移動します。
for((count=0; count < 3; count++))
do
set -- *
oldest=$1
for f in ./*
do
if [ "$f" -ot "$oldest" ]
then
oldest=$f
fi
done
echo mv -- "$oldest" ./.archive
mv -- "$oldest" ./.archive
done