毎日バックアップを取り、ステータスを更新して、特定の時間にチームをサポートする必要があります。この場合、ディレクトリで最後に作成/変更された*.aff
ファイルの最後の5行をチェックして更新する必要があります。
誰かが*.aff
ファイルのようにLinuxで最後に変更されたファイル(特定の拡張子)の最後の5行を表示する方法を教えてもらえますか?他のファイルも作成されます。 *.log
など.
zsh
シェルの場合:
tail -n 5 ./*.aff(D.om[1])
他のシェルでは、ファイル名に含まれる可能性のあるものを推測したくない場合、信頼できるものを思い付くのは非常に困難です。
たとえば、最近のGNUシステムを使用している場合、bash
と同等のものは次のようになります。
find . -maxdepth 1 -name '*.aff' -type f -printf '%T@:%p\0' |
sort -rzn |
sed -zn 's/[^:]*://p;q' |
xargs -r0 tail -n 5
または:
find . -maxdepth 1 -name '*.aff' -type f -printf '%T@/%p\0' |
sort -rzn | (IFS=/ read -rd '' mtime file && tail -n 5 "$file")
ファイル名に改行文字が含まれておらず、すべての*.aff
ファイルが通常のファイルであると仮定します。
ls -t1d -- *.aff | head -n 1
最近変更された.aff
-ファイルの名前を示します。最後の5行が必要な場合は、次のようにします。
tail -n 5 -- "$(ls -t1d -- *.aff | head -n 1)"
すべてのGNUシステムおよびBusyboxで機能するはずの別の安全なアプローチ:
tail -n5 "$(stat -c "%Y %n" ./* |
sort -nk1,1 | cut -d ' ' -f 2- | tail -n1)"
これはほとんどの場合に機能しますが、ファイル名に改行を含めることができる場合は、代わりにこれを使用してください(GNUのみ、ファイルが改行で終わる場合でも壊れます)。
tail -n5 "$(stat --printf "%Y %n\0" ./* |
sort -rznk1,1 | sed -zn 's/[0-9]\+ //p;q')"