lsコマンドを実行すると、出力は次のようになります。
file1 file2 file3 file4
出力の特定の列(この場合はfile2)のみを表示できますか?私は成功せずに次のことを試しました。
echo ls | $2
基本的に私が望むのは、2番目の列だけをエコーすることです。この場合はエコしたいです。
file2
答え1
次のコマンドは、出力形式を1ls
つの列として指定します。
ls -1 /directory
答え2
最も信頼性の高い方法は、ファイルを配列に配置してから解析を防ぐために2番目のファイルをインポートすることです。
files=(*)
printf '%s\n' "${files[1]}"
ファイルの検索順序は値によって異なりますLC_COLLATE
。したがって、LC_COLLATE=C
すべての特殊なケースで「標準」のソートが必要な場合は、まずそれを設定することをお勧めします。
答え3
出力が端末でない場合は、単一列モードを使用するには -C
asを追加する必要があります。次に、2番目の列を印刷します。ls
awk
ls -C | awk '{print $2}'
答え4
すでに述べたように、列を使用してls
出力を解析するls
ことは、ファイル名の長さと端末の幅に応じて行が途切れるため、あまり強力ではありません。要素リストの単一の列を表示することはしばしば楽しいです。 Cutコマンドを使用してこれを実行できます。
echo file1 file2 file3 file4 | cut -d" " -f2
表示されます
file2
-d
列区切り記号を選択できます。
cut -d, -f2
カンマ区切りリストの2番目の列を表示できます。