디렉토리내의 파일의 경우, 에코 파일명(경로 없음)만을 사용합니다.
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
'programing' 카테고리의 다른 글
해시 세트 대퍼포먼스 일람 (0) | 2023.04.15 |
---|---|
앱이 백그라운드에서 돌아왔을 때 viewApp이 호출되지 않는 이유는 무엇입니까? (0) | 2023.04.15 |
C#을 사용한 Excel Automation에서 상행 프리즈 및 필터 적용 방법 (0) | 2023.04.15 |
git: 치명적:원격 저장소에서 읽을 수 없습니다. (0) | 2023.04.15 |
#!/usr/bin/env bash가 #!/bin/bash보다 우월한 이유는 무엇입니까? (0) | 2023.04.15 |