내용이 모두 0으로 시작하는 파일을 이동하는 방법은 무엇입니까?

내용이 모두 0으로 시작하는 파일을 이동하는 방법은 무엇입니까?

모든 파일을 이동하는 명령입니다이름0으로 시작하는 Zero라는 폴더를 입력하세요.

mv [0]* zero

질문: 모든 파일을 이동하는 명령은 무엇입니까콘텐츠0으로 시작하는 0이라는 폴더를 입력하시겠습니까?

동일한 작업을 수행하는 짧은 명령이 있었으면 좋겠습니다.

파일 내용의 첫 문자가 로 주어진다는 것을 알고 있습니다 head -c 1 filename.

답변1

이 작업을 수행하라는 명령이 없습니다. 그러나 이것은 간단한 스크립트입니다.

  1. 내용으로 파일을 식별하고 이동하는 방법을 알아보세요.

    f=example_file.txt
    b=$(head -c1 <"$f")
    [ "$b" = "0" ] && echo mv -- "$f" zero/
    
  2. 디렉터리에 있는 100,000개의 파일 전체를 반복하는 방법을 알아보세요.

    find . -maxdepth 1 -type f -print
    

    또는 쉘에서 많은 수의 항목에 와일드카드를 사용할 수 있도록 허용하면 더 간단하고 명확한 루프가 작동할 수 있습니다.

    for f in *
    do
        echo "./$f"
    done
    
  3. 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
    
  4. 최적화된 find버전:

    find -maxdepth 1 -type f -exec sh -c '
        for f in "$@"
        do
            [ "$(head -c1 "$f")" = "0" ] && echo mv -- "$f" zero/
        done
    ' _ {} +
    

모든 경우에 echo명령이 수행할 작업을 알려주는 것에서 실행하는 것으로 변경하려면 제거하십시오.

관련 정보