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
'

おすすめ記事