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기본적으로 알파벳 순서로 출력이 제공됩니다. 원하는 동작을 얻으려면 한 번에 한 줄의 출력만 전달 -n 1하도록 명령에 인수를 추가하거나 xargs, GNU 구현을 사용하는 경우 파일 목록을 정렬하지 않도록 지시하는 옵션을 추가하세요.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

관련 정보