programing

디렉토리내의 파일의 경우, 에코 파일명(경로 없음)만을 사용합니다.

css3 2023. 4. 15. 09:11

디렉토리내의 파일의 경우, 에코 파일명(경로 없음)만을 사용합니다.

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 루프 본문에 있는 "file name" 구성 요소를 추출하는 것과 반대됩니다.

다음은 원본에 이은 예입니다.

for filename in $(ls /home/user/)
do
  echo $filename
done;

파일과 같은 디렉토리에서 스크립트를 실행하고 있는 경우는, 다음과 같이 됩니다.

for filename in $(ls)
do
  echo $filename
done;

위의 SieveX를 사용하거나 파라미터 확장 학습/사용에 관심이 없는 경우 다음을 사용할 수 있습니다.

for filename in $(ls /home/user/);
do
    echo $filename
done;

파일 이름만 원하는 경우:

for file in /home/user/*; do       
  f=$(echo "${file##*/}");
  filename=$(echo $f| cut  -d'.' -f 1); #file has extension, it return only filename
  echo $filename
done

에 대한 자세한 내용은cut명령어는 여기를 참조해 주세요.

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