lsが入力順序を維持することは可能ですか?

lsが入力順序を維持することは可能ですか?

これにより、/usr/bin/which --all git私が経験したすべてのことが表示されます。git$PATH最初の行は有効な行を示しています

下図のgitバージョンが/home/kmodi/stowed/bin/git有効なバージョンです。

今、結果の実際のファイル名を知りたいです。

したがって、/home/kmodi/stowed/bin/gitシンボリックリンクの場合、それが何を指しているのか知りたいのです。

実行すると、/usr/bin/which --all git | xargs \ls -Fplシンボリックリンク参照が表示されます。しかし、出力結果が混乱しています。リストされたファイルの元の順序は維持されません!この出力(下)を見ると、そのバージョンが/cad/..有効なgitバイナリパスであると仮定できます。

xargsこの順序を維持する方法はありますか?

ここに画像の説明を入力してください。


重要な場合はtcshシェルを使用しています。


Johnのヒントのおかげで、-n 1ついにお気に入りのソリューションがありました。とても汚いです。その引用!(ありがとうございますtcsh)しかしうまくいきます。

alias whichall '/usr/bin/which --all \!* \\
                | xargs -n 1 \ls -Fpl --color=always \\
                | awk -v OFS="" '"'"'{$1=$2=$3=$4=$5=$6=$7=$8=""; print $0}'"'"' \\
                | \sed '"'"'/^$/d'"'"'; \\
               '

whichall git与えられた:ここに画像の説明を入力してください。

答え1

このxargsコマンドは引数の順序を保持しますが、すべての引数を のインスタンスに渡すので、デフォルトではlsアルファベット順に出力が提供されます。必要な動作を得るには、一度に1行の出力のみを渡すようにコマンドに引数を追加するか、 GNU実装を使用している場合はファイルリスト-n 1をソートしないようにxargs指示するオプションを追加します。lsls-U

アクションls:

$ ls -lad /usr/bin /etc
drwxr-xr-x. 146 root root 12288 May 18 09:46 /etc
dr-xr-xr-x.   2 root root 57344 Dec 12 15:30 /usr/bin

関連情報