for 루프로 디렉토리를 반복하는 경우 파일의 파일 이름 만 에코하려면 어떻게해야합니까?
for filename in /home/user/*
do
echo $filename
done;
파일 이름으로 전체 경로를 가져옵니다. 파일 이름 만 알고 싶습니다.
답변
네이티브 bash
솔루션 을 원하는 경우
for file in /home/user/*; do
echo "${file##*/}"
done
위는 셸 고유의 매개 변수 확장 을 사용 하며 다음과 같은 외부 바이너리에 대한 호출이 필요하지 않습니다.basename
그러나 사용하는 것이 좋습니다. find
find /home/user -type f -printf "%f\n"
답변
그냥 사용하십시오 basename
:
echo `basename "$filename"`
$ filename에 공백 등이 포함 된 경우 따옴표가 필요합니다.
답변
사용 basename
:
echo $(basename /foo/bar/stuff)
답변
또 다른 방법은 ls
디렉토리 내의 파일 목록을 읽을 때 사용 하여 원하는 것을 제공하는 것입니다. 즉 “파일 이름 만”입니다. 전체 파일 경로를 읽은 다음 for 루프 본문에서 “파일 이름”구성 요소를 추출하는 것과 반대입니다.
원본을 따르는 아래 예 :
for filename in $(ls /home/user/)
do
echo $filename
done;
파일과 동일한 디렉토리에서 스크립트를 실행하는 경우 다음과 같이됩니다.
for filename in $(ls)
do
echo $filename
done;
![](http://daplus.net/wp-content/uploads/2023/04/coupang_part-e1630022808943-2.png)