모든 파일을 이동하는 명령입니다이름0으로 시작하는 Zero라는 폴더를 입력하세요.
mv [0]* zero
질문: 모든 파일을 이동하는 명령은 무엇입니까콘텐츠0으로 시작하는 0이라는 폴더를 입력하시겠습니까?
동일한 작업을 수행하는 짧은 명령이 있었으면 좋겠습니다.
파일 내용의 첫 문자가 로 주어진다는 것을 알고 있습니다 head -c 1 filename
.
답변1
이 작업을 수행하라는 명령이 없습니다. 그러나 이것은 간단한 스크립트입니다.
내용으로 파일을 식별하고 이동하는 방법을 알아보세요.
f=example_file.txt b=$(head -c1 <"$f") [ "$b" = "0" ] && echo mv -- "$f" zero/
디렉터리에 있는 100,000개의 파일 전체를 반복하는 방법을 알아보세요.
find . -maxdepth 1 -type f -print
또는 쉘에서 많은 수의 항목에 와일드카드를 사용할 수 있도록 허용하면 더 간단하고 명확한 루프가 작동할 수 있습니다.
for f in * do echo "./$f" done
mv
가능한 모든 파일에 대해 코드를 실행하는 방법을 알아보세요 .find -maxdepth 1 -type f -exec sh -c ' b=$(head -c1 "$1") [ "$b" = "0" ] && echo mv -- "$1" zero/ ' _ {} \;
또는
for f in * do [ "$(head -c1 "$f")" = "0" ] && echo mv -- "$f" zero/ done
최적화된
find
버전:find -maxdepth 1 -type f -exec sh -c ' for f in "$@" do [ "$(head -c1 "$f")" = "0" ] && echo mv -- "$f" zero/ done ' _ {} +
모든 경우에 echo
명령이 수행할 작업을 알려주는 것에서 실행하는 것으로 변경하려면 제거하십시오.