-1

私は次のフォルダ構造を持っています...

/main/2000/01_January/a.jpg
/main/2000/01_January/b.jpg
/main/2000/04_April/a.jpg
/main/2000/04_April/b.jpg
/main/2000/04_April/c.jpg
/main/2001/02_February/a.jpg
/main/2002/06_June/a.jpg

等...

次の方法でこの構造を平坦化するには、bash スクリプトが必要です。第 2 レベルのフォルダー (2000、2001、2002 など) を削除し、第 2 レベルのフォルダー名を挿入して「_ monthname」を切り捨てて、第 3 レベルのフォルダーの名前を変更したいと考えています。結果は次のようになります...

/main/2000-01/a.jpg
/main/2000-01/b.jpg
/main/2000-04/a.jpg
/main/2000-04/b.jpg
/main/2000-04/c.jpg
/main/2001-02/a.jpg
/main/2002-06/a.jpg

等...

4

2 に答える 2

1
find /main/????/[0-9][0-9]_*/ -type f | while read -r FILE; do
    DEST=${FILE:0:10}-${FILE:11:2}/
    echo "Moving $FILE to $DEST."
    mkdir -p "$DEST" && mv "$FILE" "$DEST"
done

# rm -fr /main/????/
于 2013-09-22T10:01:04.953 に答える