Pythonheapq.nsmallest

Pythonheapq.nsmallest

最も古いファイル(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しかし、コードの終わりに検索結果をlsfind

ベストアンサー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

おすすめ記事