我正在使用以下
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:无法统计“文件名”没有这样的文件或目录”
我看不出有什么合理的理由为什么会出现这种情况?
答案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
'