
今日の日付 (yyyy_mm_dd) で名前が付けられたディレクトリを作成し、今日の日付で終わるすべてのファイルをそのディレクトリに移動するスクリプトを作成しています。私が行った操作ではディレクトリも選択されているため、ファイルをディレクトリに移動するより良い方法はありますか。
now=$(date '+%Y_%m_%d')
mkdir $now
mv *$now $now/
答え1
mv *?"$now" "$now/."
?
は、タイムスタンプの前に少なくとも 1 つの文字 ( ) があることを要求することで、作成したばかりのディレクトリが移動対象として選択されないようにします。
答え2
このfind
コマンドはファイル名だけでなくファイルの種類でもフィルタリングできます。
したがって、これは必要なことを実行すると思います:
now=$(date '+%Y_%m_%d')
find . -name "*$now" -type f -print0 | xargs -0 mv -t $now/
ただし、これを大規模なバッチで実行する前に、ファイル名に奇妙な点 (日付文字列を含む他のディレクトリなど) がないかどうかを検討する必要があるかもしれません。