Programing

디렉토리에있는 파일의 경우 echo 파일 이름 만 (경로 없음)

lottogame 2020. 9. 15. 19:10
반응형

디렉토리에있는 파일의 경우 echo 파일 이름 만 (경로 없음)


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;

참고 URL : https://stackoverflow.com/questions/9011233/for-files-in-directory-only-echo-filename-no-path

반응형