web-dev-qa-db-ja.com

サブディレクトリを作成し、日付でファイルを整理する

防犯カメラからコピーしたファイルのディレクトリがいくつかあり、ファイルの日付ごとにサブディレクトリに整理したいと思います。たとえば、

-rwxrwxrwx 0 root root 4935241 Jul 19  2012 DSCN1406.JPG
-rwxrwxrwx 0 root root 4232069 Jul 19  2012 DSCN1407.JPG
-rwxrwxrwx 0 root root 5015956 Jul 20  2012 DSCN1408.JPG
-rwxrwxrwx 0 root root 5254877 Jul 21  2012 DSCN1409.JPG

そのディレクトリ内のファイルを確認するために実行するスクリプトが必要です。次に、次のような名前の3つの必要なディレクトリを作成します。

drwxrwxrwx 1 root root     0 Sep  2 16:49 07-19-2012
drwxrwxrwx 1 root root     0 Sep  2 16:49 07-20-2012
drwxrwxrwx 1 root root     0 Sep  2 16:49 07-21-2012

次に、ファイルを適切なディレクトリに移動します。誰かがこれを達成するための良いスクリプト可能な方法について何か提案がありますか?

7

LinuxおよびCygwinでは、date -rを使用してファイルの変更日を読み取ることができます。

for x in *.JPG; do
  d=$(date -r "$x" +%Y-%m-%d)
  mkdir -p "$d"
  mv -- "$x" "$d/"
done

(私は明確で標準的な、簡単に並べ替えられるYYYY-MM-DD形式を日付に使用します。)

以下はフェイルセーフです。これは、ディレクトリパスに入り、ディレクトリ内のファイルの編成を行うため、編成するオブジェクトがファイルであるかどうかをチェックするだけです。

dir="mention the directory path"; cd "$dir" ; for x in *; do if [ -f "$x" ]; then d=$(date -r "$x" +%Y/%B/%d) && mkdir -p "$d" && mv -- "$x" "$d/"; fi; done
0
Anurag Gupta