for 루프를 사용하여 디렉토리를 반복하는 경우 파일의 파일 이름 만 표시하는 방법은 무엇입니까?디렉토리에있는 파일의 경우 echo filename (경로 없음)
for filename in /home/user/*
do
echo $filename
done;
은 파일 이름으로 전체 경로를 가져옵니다. 파일 이름 만 입력하면됩니다.
for 루프를 사용하여 디렉토리를 반복하는 경우 파일의 파일 이름 만 표시하는 방법은 무엇입니까?디렉토리에있는 파일의 경우 echo filename (경로 없음)
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"`
를 따옴표는 $ 파일 이름은 예를 들어, 포함하는 경우에 필요하다 공백
감사합니다. 똑바로. – Mechaflash
매개 변수 확장을 사용하는 것이 더 좋으며 외부 바이너리를 호출 할 필요가 없습니다. – SiegeX
Btw,''은 (는) 사용되지 않습니다. Oli처럼'$()'을 사용하는 것이 더 낫다 – SiegeX
사용 basename
:
echo $(basename /foo/bar/stuff)
좋은 대답. 매개 변수 확장에 대한 자세한 내용을 보려면 http://wiki.bash-hackers.org/syntax/pe#substring_removal – DougW
-printf : 알 수없는 기본 연산자 또는 연산자 – Matthew