리눅스: bash스크립팅
2016.01.29 21:50
쉘 스크립팅도 배워놓으면 재미있을거 같아요.
저만 그런지 모르겠지만 여러가지 다운받으면 다운로드 폴더가 지저분해지는데
다운로드 폴더들을 정리해주는 간단한 스크립트를 만들어봤습니다.
특히 월페이퍼를 따로 저장하게 했습니다.
폴더는 Pictures/wallpapers로 되어 있는데 원하는대로 바꾸심되고,
기준은 allpaper,HD,ackground등의 스트링이나 1900x1000 등의 디멘젼스트링을 검색합니다.
이미지라이브러리를 이용하면 더 정확할텐데 그거까진 필요없을거 같네요
다른 화일들도 이런식으로 분류할수 있습니다. 음악화일들은 메타데이터들을 참고해서 분류한다든가...
다큐먼트들도 문자열검색으로 따로 분류한다든가 활용하실수 있어요.
파이핑해서 넘길때 쿼트익스팬션부분이 어떻게 되는지 모르겠어서 한참 들여다봐야하더군요
사용자폴더에 bin 을 만드시고
chmod +x 로 화일에 실행권한 주신다음 쓰시면 됩니다.
*bash라서 다른 쉘에선 안될수도 있고요.
위험할수 있으니 자기머신이나 자신계정에서만 꼭 이해하시고 공부용도로 쓰시기 바랍니다.
1 #! /bin/bash
2
3 cd "$HOME/Downloads"
4 wppr_dir="$HOME/Pictures/wallpapers"
5 # create wallpaper dir.
6 mkdir -p $wppr_dir
7
8 #replace spaces in file name with _:fall back to this option when in trouble
9 #ls *.{jpg,png} | rename 's/ /_/g'
10
11 re=$( ls *.{jpg,png} | egrep 'allpaper|ackground|HD|([0-9]{4}x[0-9]{3,4})' )
12 echo "$re"
13 while read -r line;
14 do
15 mv -i "$line" $wppr_dir
16 done <<< "$re"
17
18 # handle the rest..
19 mv -i *.{avi,mkv,mp4,m4a} "$HOME/Videos"
20 mv -i *.{pdf,odt,doc} "$HOME/Documents"
21 mv -i *.{flac,mp3,odd} "$HOME/Music"
22 mv -i *.{jpg,png} "$HOME/Pictures"
혹시 개선점이 있으시면 나눠보아요