ls
複数のディレクトリを一覧表示するには、次のコマンドを実行します。フォルダの空き領域を確認してくださいX y
。
ls -1d 2021*/"X y"/foobar
出力は次のとおりです
'20211121-161518-801/X y/foobar'
'20211128-151513-585/X y/foobar'
'20211130-170001-724/X y/foobar'
lsはここでも引用符を使用しているようです。ただし、この出力を引用符とxargs
組み合わせると、継ぎ目が失われます。
ls: Zugriff auf '20211121-161518-801/X' nicht möglich: Datei oder Verzeichnis nicht gefunden
ls: Zugriff auf 'y/foobar' nicht möglich: Datei oder Verzeichnis nicht gefunden
xargs コマンドは次のとおりです。
ls -1d 2021*/"X y"/foobar | xargs ls
結局私はaを使いますが、xargs rm -rf
これはxargs ls
単なるテストです。
ベストアンサー1
Stéphane Chazelasは、「現代」について一般的に見事で深い探求を提供しますが、ls
すべてのls
esが同じになるわけではありません。新しいGNUがls
登場しても、--zero
どこにも広がるには数十年かかりますが、まだすべてのシステム、特にGNUベースではないシステムでは機能しません。
一般的な合意は、ls
これが人間が消費することであり、実際に他の目的で信頼してはならないということです。
これは以前の管理者の間でかなり常識的ですが、Linuxがニッチ市場を超えて徐々に主流環境と国家化環境に移行するにつれて、新しい管理者と初心者管理者はまだ理解できない(または説明できない)理由で新しい管理者と初心者管理者のみを使用しますしますls
。ls
(あなたの状況でわかるように)深刻な問題になります。これがGNUが何十年にもわたって「急速に」発展してきており、誰にでも選択肢が必要な理由ですls
。ls
ただし、この問題を即時に、信頼性が高く、安全に解決し、タスクを正しく実行するには、ゼロfind
区切りリストジェネレータまたは直接コマンドランチャーとして正しいツールがコマンドです。
find
ゼロで区切られたリストジェネレータとして使用されます。
find topdir -mindepth 1 [-maxdepth 2] -type d -print0 | xargs -0 -I@ stat @
find
直接実行者として使用:
find topdir -mindepth 1 [-maxdepth 2] -type d -exec stat '{}' \;
-mindpeth
/を使用すると、ドロップ-maxdepth
深度を制御し、find
処理-type
するオブジェクトを制御できます。オブジェクト名またはオブジェクトパスも一致させることができます。オブジェクト名は基本的に「インテリジェントな」方法で破損またはエスケープされないため、find
恐れなくパイプ(ジェネレータ)またはargvベクトル(ランチャー)の一部としてこれらのアイテムを元のオブジェクトに渡すことができます。
この方法でリストをパイピングするときは、-print0
常に名前がゼロで区切られ、他の文字(スペースや改行など)を直接表現できるようにして、読者が混同しないようにする必要があることに注意してください。