最新のファイルを見つけてください。複数のファイル形式の制限

最新のファイルを見つけてください。複数のファイル形式の制限

私に与える命令を書きたい最新のドキュメントディレクトリに再帰的。しかし、それが私の唯一の制限ではありません。これらのファイルは次のようにする必要があります。mp3 またはjpg文書。 (大文字と小文字を区別しない優先)最新ファイルの作成日のみが必要です。可能であれば、30-12-2014形式にしたいと思います(したがって:日月年)

これが私が現在持っているものです:

find .  -name '*.mp3' -or -name '*.JPG'   -printf "%TD \n" | sort -rn | head -n 1

しかし、効果は良くありません。 JPGのみをインポートし、日付形式は指定されません。

答え1

次のように動作する必要があります。

find . \( -iname "*.mp3" -o -iname "*.jpg" \) -printf '%TY%Tm%Td %TT %p\n' | sort -r

これは、mp3またはjpgで終わるファイル(大文字と小文字を区別しない)を見つけて修正時間を印刷し、逆の順序でソートする必要があります。

2つのコマンドで効果的に実行すると、2つのファイル形式が表示されるようです。

( find . -iname "*.mp3" -printf '%TY%Tm%Td %TT %p\n' ; find . -iname "*.jpg" -printf '%TY%Tm%Td %TT %p\n' ) | sort -r

答え2

そしてzsh

setopt extendedglob
zmodload zsh/stat
zstat -F %F +mtime -- **/(#i)*.(mp3|jpg)(Om[1])

基準で書かれているので参考にしてください最後のレビュー時間、作成時間(それが何を意味していても)通常、Linuxでは使用するのは簡単ではありません。

隠しファイルは考慮しません。必要に応じて、上記のDワイルドカード修飾子を追加してください。

答え3

以下も参照してください。

find . -type f -mtime -1 \( -name '*.mp3' -o -name '*.jpg' \) -printf '%AY-%Am-%Ad %P \n'

答え4

他の人が変更したように、-orを-oに指定する必要があります。私の考えには括弧も必要だと思います(元の投稿修正)。%T@フォーマット指定子(1970年以降の秒)を使用すると、ソートがよりきれいになり、次のように変換できます。

date --date="@`find . \\( -iname "*.mp3" -o -iname "*.jpg" \\) -printf '%T@\n' | sort -rn | head -n1`" 

何が関係ない希望の日付形式を使用することもできます+

関連情報