![여러 모드의 파일을 특정 디렉터리인 bash로 이동하는 방법은 무엇입니까?](https://linux55.com/image/119053/%EC%97%AC%EB%9F%AC%20%EB%AA%A8%EB%93%9C%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%ED%8A%B9%EC%A0%95%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%B8%20bash%EB%A1%9C%20%EC%9D%B4%EB%8F%99%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
여러 정의된 스키마가 있는 파일을 이동해야 합니다. 예:
Z_*ana_bwk_na_N*.png
Z_*ana_bwk_dwda*.png
Z_*ana_bwkman_dwdna*
Z_*ana_bwkman_dwdc*
Z_*EDZW*_nwv01*_p00_na_N*WV11.png
Z_*EDZW*_nwv01*_p00_nh_N*WV11.png
Z_*nwv01*_hsy_NA*.png
Z_*EDZW_*_htp_na_N_*_WV11SW.png
Z_*_rft_na_*.png
Z_*_r12*
정의된 폴더에서 다른 폴더로.
가장 경제적인 방법으로 이를 어떻게 수행할 수 있습니까? 스크립트에서 cron에서 실행하시겠습니까?
이러한 패턴을 동일한 스크립트에서 더 잘 정의할 수 있습니까, 아니면 패턴이 포함된 별도의 텍스트 파일에서 가져올 수 있습니까?
답변1
이것은 매우 간단합니다.
mv Z_*ana_bwk_na_N*.png Z_*ana_bwk_dwda*.png Z_*ana_bwkman_dwdna* -t /your/directory/
파일 입력을 더 우아하게 만들고 싶다면:
PATTERNS=`cat input.txt | paste -sd " " - ` && mv $PATTERNS -t /your/directory/
답변2
패턴이 패턴이라는 파일에 있다고 가정합니다.
mapfile -t arr < patterns && mv -t destination "${arr[@]}"
답변3
가장 효율적이지만 아마도 가장 명확하지 않은 방법은 mv
하나의 크고 행복한 명령으로 모든 것을 열거하는 것입니다.
mv Z_*ana_bwk_na_N*.png \
Z_*ana_bwk_dwda*.png \
Z_*ana_bwkman_dwdna* \
Z_*ana_bwkman_dwdc* \
Z_*EDZW*_nwv01*_p00_na_N*WV11.png \
Z_*EDZW*_nwv01*_p00_nh_N*WV11.png \
Z_*nwv01*_hsy_NA*.png \
Z_*EDZW_*_htp_na_N_*_WV11SW.png \
Z_*_rft_na_*.png \
Z_*_r12* \
destination
분할하고 싶다면(아마도 "명령줄이 너무 길어서") 여기에서 문서를 사용할 수 있습니다.
while read files; do
mv $files dest
done <<____
Z_*ana_bwk_na_N*.png
Z_*ana_bwk_dwda*.png
Z_*ana_bwkman_dwdna*
Z_*ana_bwkman_dwdc*
Z_*EDZW*_nwv01*_p00_na_N*WV11.png
Z_*EDZW*_nwv01*_p00_nh_N*WV11.png
Z_*nwv01*_hsy_NA*.png
Z_*EDZW_*_htp_na_N_*_WV11SW.png
Z_*_rft_na_*.png
Z_*_r12*
____
대상을 매개변수화하려는 경우에도 그렇게 할 수 있습니다.
while read destination files; do
mv $files "$destination"
done <<____
here Z_*ana_bwk_na_N*.png
here Z_*ana_bwk_dwda*.png
here Z_*ana_bwkman_dwdna*
there Z_*ana_bwkman_dwdc*
there Z_*EDZW*_nwv01*_p00_na_N*WV11.png
everywhere Z_*EDZW*_nwv01*_p00_nh_N*WV11.png
here Z_*nwv01*_hsy_NA*.png
elsewhere Z_*EDZW_*_htp_na_N_*_WV11SW.png
there Z_*_rft_na_*.png
anywhere Z_*_r12*
____
다소 혼란스럽게도 이 문서의 와일드카드는 셸에 의해 확장됩니다.루프가 실행되기 전에. 내부 루프를 따옴표로 묶어야 하기 때문에 확장된 파일 이름에는 쉘 메타 문자(정확히 일치하지 않는 문자, 일반적으로 불규칙한 공백 또는 와일드카드 표현)가 포함될 수 없습니다.