내가 할 수 있는 방법이 있나요? 예를 들어, a가 다음과 같은 긴 이름을 얻는다면:
i-have-names-that-are-too-long-to-describe/
i-have-names-that-are-too-long-to-describe-2/
i-have-names-that-are-too-long-to-descri-3/
ls
ls -l
내 파일 또는 디렉터리 이름이 20자를 초과하는 경우 에서 업그레이드할 수 있습니까?
.bashrc
이 작업을 수행하기 위해 내 bash 기능을 설정하는 방법이 있습니까 ? 생성된 함수 lls()를 호출하겠습니다.
@tripleee가 질문했습니다.
ls -l
입력 파일 이름이 너무 길 때 사용하시겠습니까? 왜? 출력을 더 짧게 만드는 것이 아니라 더 길게 만듭니다. 긴 파일 이름과 짧은 파일 이름이 혼합되어 있는 경우 어떻게 해야 합니까?
긴 파일 이름을 읽는 것이 목록으로 체계화되도록 하는 것이 좋습니다(고정 열을 더 쉽게 소화하고 읽을 수 있도록 함). 긴 파일 이름과 짧은 파일 이름이 혼합된 경우에는 기본적으로 목록 형식을 사용하겠습니다.
답변1
귀하의 요구 사항을 충족하는 기본 제공 옵션이 없습니다 ls
. 출력을 구문 분석한 후 "긴" 파일 이름이 발견되면 다시 시작하거나 다음을 수행해야 합니다.
$ ls ??????????* >& /dev/null && ls -l || ls
( ?
길이 제한을 원하는 만큼 입력하세요. 별칭으로 설정할 수 있습니다.)
그냥 사용해 보는 게 어때요 ls -1
? (소문자 L이 아닌 a입니다.) 항상 한 열에 파일을 나열합니다. (또는 단일 열 디스플레이에 연결할 수도 있는 또는 에 파이프 ls
로 연결됩니다.) 또는 와 함께 사용됩니다 .more
less
find
-maxdepth 1
답변2
if [ $(ls "$@" | ( max=0; while read l ; do len=${#l} ; [[ $max -lt $len ]] && max=$len; done; echo $max )) -gt 20 ]
then
ls "$@"
else
ls -l "$@"
fi
또는 manatwork의 제안 덕분에 이 간단한 접근 방식에서는 GNU wc를 사용할 수 있다고 가정합니다.
[[ $(ls "$@" | wc -L) -gt 20 ]] && ls "$@" || ls -l "$@"
답변3
내가 원하는 것에 대한 나의 독립적인 시도는 다음과 같습니다.
lls(){
opt=" "
for i in $(ls -l | tr -s " " | cut -d' ' -f9)
do
count=$(echo $i | wc -m)
if [ $count -gt 20 ] ; then
opt=" -l"; break;
fi
done
ls $opt
}
내 .bashrc에 넣었습니다. 그러나 이를 위해서는 tr, cut 및 wc를 사용해야 합니다.