マイメディアセンターディレクトリ内のマイフォルダのすべての変更時間は、必須の日付ではありません。
既定のフォルダ内のすべての変更時間を各フォルダ内の最新のメディアファイルの変更時間にどのように変更できますか?
たとえば、
cd /tmp
mkdir test
cd test
mkdir d1
mkdir d2
touch d1/text1.txt
touch d1/movie1.mov
touch d2/text2.txt
touch d2/movie2.mov
touch notthis.file
今私は次を試しました。
ls -td *| head -n 1
しかし、これは以下を提供します:
notthis.file
ベストアンサー1
そしてzsh
:
cd that-dir &&
touch -r *(D.om[1]) .
サブディレクトリのファイルも考慮するには、次の手順を実行します。
touch -r **/*(D.om[1]) .
空でないすべてのディレクトリに対してこの操作を繰り返し実行するには、次の手順を実行します。
for d (**/*(DFod)) touch -r $d/*(D.om[1]) -- $d
通常のファイルがない空でないディレクトリがある場合(含まれるすべてのファイルがディレクトリ、シンボリックリンク、fifos ...などの非標準ファイルの場合)、「一致エントリが見つかりません」というエラーが発生します。これを防ぐには、次のように変更できます。
for d (**/*(DFod)) {
newest=($d/*(ND.om[1]))
(( $#newest )) && touch -r $newest -- $d
}
.
通常のファイルに制限したくない場合は、glob修飾子を削除してください。一般ファイルへのシンボリックリンク(およびそのファイルが指すファイルの変更時間)も考慮するには、glob修飾子を削除します-
。^/
または、^/,F
空のディレクトリ(非ディレクトリまたはF
空のディレクトリ)を除くすべての種類のファイル。