ダウンロードフォルダを並べ替えたいです。私の目標は、今週のファイルをダウンロードフォルダに配置し、古いファイルをそのファイルが作成された週番号と年のフォルダに配置することです(例:2013.09、アルファベット順に並べ替え)。
ダウンロードフォルダのルートにあるファイルとフォルダに対してのみこれがうまくいけばと思います。tar
ブラウザは、ダウンロードが完了した後、アーカイブやその他のアイテムを自動的に拡張します。
現在、ダウンロードフォルダのルートにあるファイルとフォルダは、今週のファイルとフォルダと見なされます。しかし、mtimeとctimeは、ファイルが実際にダウンロードが完了した時点を教えてくれません。
マシンが常にオンになっている場合は、メイン番号が変わるとすぐに実行するようにcronジョブを設定できましたが、これはノートブックで、使用していないときはスタンバイモードに設定しました。
答え1
crontabを次のように設定します。
@reboot the-script
0 0 * * 1 the-script
0 0 1 1 * the-script
月曜日と起動するたびに完了します。でthe-script
完了したことを確認してください。 (ISO 8061州番号(%V)を使用しているのではなく、州番号を使用している場合(Gillesに感謝)、%W
1月1日にもこれを行う必要があります。
cron
サポートしていない場合は、@reboot
起動スクリプトに追加する必要があります。
または毎日実行し、そのようなことをしてください。 (GNU
find
OS / Xではないと仮定して、OS / Xstat
を-exec ... {} +
。
cd ~/Download || exit
find . -path './20[0-9][0-9].[0-9]*' -prune -o -type f -mtime +7 -printf '%p\0%TY.%TW\0' |
xargs -r0n2 sh -c 'mkdir -p "$2" && exec mv -i "$@"' sh
(テストされていません)
または以下を使用してzsh
:
zmodload zsh/stat
cd ~/Download || exit
for f (**/*~20[0-9][0-9].[0-9]*(.DNm+7)) {
zstat -A d -F %Y.%W -- $f &&
mkdir -p $d &&
mv -i -- $f $d
}
これを再帰的に実行したくない場合は、次の方が簡単です。
zmodload zsh/stat
cd ~/Download || exit
for f (*(.DNm+7)) {
zstat -A d -F %Y.%W -- $f &&
mkdir -p $d &&
mv -i -- $f $d
}
最後の修正時間がダウンロード時間を反映していない場合は、出生時間を使用できます。今回はOS / Xを使用してfind
(stat
そしてxargs
-maxdepth 1
いいえ再帰):
find . -type f -maxdepth 1 -Btime +7 \
-exec stat -nf%SB -t%Y.%W {} \; \
-exec printf '\0' \; \
-print0 | xargs -0n2 sh -c '
mkdir -p "$1" && mv -i "$2" "$1"' sh