그래서 바보 인내심은 19.04 서버에서 다음 스크립트를 사용하여 많은 비디오 파일을 접두사가있는 폴더로 옮기려고했습니다.
dirs=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
shopt -s nocasematch
for file in *
do
for dir in "${dirs[@]}"
do
if [ -d "$file" ]; then
echo 'this is a dir, skipping'
break
else
if [[ $file =~ ^[$dir] ]]; then
echo "----> $file moves into -> $dir <----"
mv "$file" "$dir"
break
fi
fi
done
done
잘못되었다는 단서가 없지만 파일을 폴더로 옮기는 대신 단일 출력으로갔습니다.
----> a1.ts moves into -> A <----
----> a2.ts moves into -> A <----
----> a3.ts moves into -> A <----
----> a4.ts moves into -> A <----
----> a5.ts moves into -> A <----
----> c1.ts moves into -> C <----
----> c2.ts moves into -> C <----
----> c3.ts moves into -> C <----
----> c4.ts moves into -> C <----
----> c5.ts moves into -> C <----
의도 한대로 진행되지 않고 전체 폴더를 거치지 않는 즉시 프로세스 (CTRL + C)를 중지했습니다.
그래서 지금 나는 그 파일을 가지고 A
와 C
적은 기가보다, 그것의 모양에 의해 하나의 비디오입니다.
폴더 자체의 총 디스크 사용량에는 50Gb가 고려되지 않았지만 컴퓨터의 전체 디스크 공간은 동일하게 유지되었습니다. 파일이 삭제되지 않았다고 생각합니까?
어떤 도움을 주셔서 감사합니다 :)
편집 : 파일이 실제로 사라졌고, 마지막으로 쓰여진 파일 만 남았습니다. 디스크 사용 정보를 업데이트하는 데 시간이 걸렸습니다. 이야기의 도덕은 전에 모의 파일에서 스크립트를 실행하십시오!
mv "$file" "$dir/"
후행과 함께 사용 /
; 경우 다음 $dir
존재하지 않는, mv
대신 이름 변경의 오류가 발생하지 $file
에 $dir
. 또한 고려 mv -i
하고 mv -n
. 그리고 mkdir -p
좋은 조치를 위해 항상 움직이기 전에 행동하십시오 .
A
,B
등 의 디렉토리 가 존재 했습니까? 그렇지 않은 경우 파일 이름을 바꿨습니다. 이름이로 시작a
하거나 이름A
이 바뀐 모든 파일A
은 마지막으로 이름이 바뀐 파일 만 유지되고 나머지는 덮어 씁니다. 변수를 호출dir
해도 디렉토리가 생성되지 않습니다!