回答:
わかりましたので、をあきらめない場合ls
は、少なくともすべてにバックティックを使用する癖をつけxargs
ないようにしてください。
ls -rtd ~/Downloads/* | tail -n2 | xargs -I{} mv {} .
xargs
はバッククォートより私を喜ばせます。しかし、この一連のパイプとxargs
バックティックの使用よりも技術的な理由がありますか、それとも好みの問題だけですか?
ls
、あなたはを活用することができますxargs -0
ls
はお勧めしません:mywiki.wooledge.org/ParsingLs
find
そこでGNUを使うことができます:
mv $(find ~/Download -mindepth 1 -maxdepth 1 -printf '%Ts %p\n' | sort -n | cut -d ' ' -f2- | tail -n 2) .
find -printf
オプション:
%Ts
時間をエポックとして表示する%p
ファイルパス見る man find | less +/'^ *-printf'
編集する
ファイル名のスペースを処理する必要がある場合は、これを別の解決策としてお勧めします。
find -maxdepth 1 -printf '%Ts %p\n' |
sort -n |
cut -d ' ' -f2- |
tail -n 2 |
xargs -i% mv % .
find -printf
オプションに関する説明を追加
-f2-
代わりに使用する特別な理由はあり-f2
ますcut
か?2つ目のダッシュは何ですか?
man cut
、複数のcolがある場合は最後まで印刷します。
zshの場合:
mv ~/Downloads/*(.om[1,2]) .
この(...)
部分は、の優れた機能の1つであるグロビング修飾子と呼ばれますzsh
。各修飾子(通常は1文字)を使用すると、ファイルの属性(タイプ、サイズ、時間...)に基づいて一致するエントリをフィルタリングしたり、展開される順序を変更したり、展開方法を変更したりできます。
上記には、次のものがあります。
.
(ドット):通常のファイルのみを選択します(ディレクトリ、シンボリックリンクではありません...)om
:OリストRDER メートルの odification時間。[1,2]
:最初の2つのエントリのみを選択します。また、一致しない場合(他のシェルが誤って間違ったファイル/ディレクトリを移動する可能性がある場合)、コマンドは失敗することにも注意してください。
find
代わりに使用してください。