mv: 'filename'을 계산할 수 없습니다. 해당 파일이나 디렉터리가 없습니다

mv: 'filename'을 계산할 수 없습니다. 해당 파일이나 디렉터리가 없습니다

나는 다음을 사용하고 있습니다

sudo docker exec -w /home/Docker1 Docker_1 ls -S | cat -n | while read n f; do mv -n "$f" "$n.txt"; done

이 명령은 docker 컨테이너 내에서(alpine 사용) 정렬/이름 바꾸기 명령을 실행하지만 다음 오류와 함께 실패합니다.

mv: 'filename'을 계산할 수 없습니다. 해당 파일이나 디렉터리가 없습니다."

왜 이런 일이 발생하는지 논리적인 이유가 없나요?

답변1

이 파이프라인은 docker에서 실행되지 않습니다.

sudo docker exec -w /home/Docker1 Docker_1 ls -S    # Runs "docker" as root and then calls "ls -S" in Docker's context
cat -n                                              # Runs in your local user's context (not root, not docker)
while read n f; do mv -n "$f" "$n.txt"; done        # Also in your local user's context

Docker 컨테이너 내부의 파일 이름을 바꾸시겠습니까? 그럴 수도 있습니다(하지만 테스트할 수는 없습니다). 편안함을 느낄 때 제거하면 echo원하는 대로 작동합니다.

sudo docker exec -w /home/Docker1 Docker_1 sh -c '
    n=1; ls -S | while IFS= read -r f; do echo mv -f "$f" "$n.txt"; n=$((n+1)); done
'

관련 정보