私は数日より古いファイルを取得し、すべての情報(サイズ、フルパスなど-によって提供されるものと同様のものls
)を含むサイズに基づいて降順で一覧表示しようとしています。
私は古いファイルを見つけることができますが:
find . -mtime +10
必要な情報を一覧表示できません。
私は数日より古いファイルを取得し、すべての情報(サイズ、フルパスなど-によって提供されるものと同様のものls
)を含むサイズに基づいて降順で一覧表示しようとしています。
私は古いファイルを見つけることができますが:
find . -mtime +10
必要な情報を一覧表示できません。
回答:
ファイルパスに改行文字が含まれていない場合:
find . -mtime +10 -printf "%s %n %m %u %g %t %p" \( \
-type l -printf ' -> %l\n' -o -printf '\n' \) | sort -k1,1 -n
find
マニュアルのセクションを参照してくださいActions
。
このコマンドは、find
およびのPOSIX機能のみを使用しますls
。
find . -type f -mtime +10 -exec ls -lS {} +
ただし、プライマリと一致する現在のディレクトリ(または再帰的にサブディレクトリ)に非常に多数のファイルがある場合は、複数回呼び出す可能性があります。ls
-mtime +10
ls
もちろん、それが複数回呼び出される場合、ソートは各ls
実行内でのみ行われ、複数の実行では行われません。
それでも、妥当な数のファイルについては、これがおそらく最善の策です。
ls
引数が1つだけ渡されている場合、それに対して実行できる並べ替えはほとんどありません。の+
代わりに;
、それはより良いでしょうが、ls
多くのファイルがある場合、それでも数回呼び出されることになるかもしれません。
とzsh
:
ls -ldrS -- **/*(m+10)
または、二重ソートを回避するには(zshによる名前とlsによるサイズ):
ls -ldrS -- **/*(m+10oN) # disable zsh sorting
または(ソートされていない場合のls
サポートの場合-U
):
ls -ldU -- **/*(m+10oL) # disable ls sorting and have zsh sort by size
D
隠しファイルも表示したい場合は、グロブ修飾子を追加します。
zargs
。これは、を使用して回避できます。
私はあなたが次のようなことをすることができると思います:
find . -type f -mtime +10 -print0 | sort -n -r -k1 | while IFS= read -r -d $'\0' line; do
#echo "$line"
ls -lS "$line"
done
コマンドの-S
パラメータに注意してくださいls
:
-Sファイルサイズで並べ替え
/home/phphil
。試してみるls -ld ...
find . -type f
代わりに使用するのはどうですか?
find ... -type f
-d
フラグを追加するのと同じように機能しますls