私は以下を使用しています
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
'