Linux

mv: cannot stat ‘filename’ no such file or directory

  • November 16, 2021

我正在使用以下

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:無法統計“文件名”沒有這樣的文件或目錄“

我認為沒有合理的理由為什麼會出現這種情況?

管道不在 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
'

引用自:https://unix.stackexchange.com/questions/676898