mv:无法统计“文件名”没有这样的文件或目录

mv:无法统计“文件名”没有这样的文件或目录

我正在使用以下

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
'

相关内容