2017-01-28 3 views
-1

私はtest_file_201701011512000.datという名前のファイルを毎日作成しています。ディレクトリが作成されていない場合はそれに応じて作成する場合、これらのファイルを日付または賢明なディレクトリに移動する必要があります。それについてどうやったらいいか教えてください。ファイルのタイムスタンプに従ってスクリプトを作成し、それぞれのディレクトリに移動します

+0

これまでに何を書いていますか? – codeforester

+1

@codeforester:これは問題ではないようです。あなたが他の人の仕事をして、彼らはその過程で何も学ばないとき、本当に何も得られません。あなたの答えは機能が何であるかに関して何も説明していません... –

答えて

0

すべてのファイルが同じディレクトリにあると仮定すると、これを行うことができます。ファイルはdest/year/monthディレクトリに移動されます:

#!/bin/bash 

dest_dir=_your_destination_directory_ 
# pattern to grab 4 digits of year and 2 digits of month 
file_pattern="_([[:digit:]]{4})([[:digit:]]{2})" 
for file in test_file_*; do 
    [[ ! -f $file ]] && continue # look at regular files only 
    if [[ $file =~ $file_pattern ]]; then 
    year="${BASH_REMATCH[1]}" 
    month="${BASH_REMATCH[2]}" 
    destination_dir="$dest_dir/$year/$month" 
    [[ ! -d $destination_dir ]] && mkdir -p "$destination_dir" 
    echo "Moving $file to $destination_dir" 
    mv "$file" "$destination_dir" 
    fi 
done 
+0

ありがとうございます、その仕事はありますが、月は2桁ie12,11,10でしか表示されませんが、私は201312,201401,201402、変更可能な場所を教えてください – Surender

+0

これは小さな変更です。$年と$月の間の '/'を削除する必要があります。 – codeforester

関連する問題