모든 파일이 .로 시작하는 디렉토리가 있습니다 . 파일 이름만 .ear
삭제하고 유지하고 싶습니다 . .ear
할 수 있나요?
내가 시도할 때
cd /path/
ls >> file
그런 다음 출력 파일에 file
저장된 디렉터리 이름 에는 .ear
끝에 있는 파일을 포함하여 모든 파일이 포함됩니다. .ear
파일 이름만 삭제하고 유지하고 싶습니다 .
답변1
/path
.ear
접미사를 제거하면서 디렉토리로 끝나는 파일 이름 목록을 생성하려면 다음을 수행하십시오 .
for name in /path/*.ear; do
basename "$name" .ear
done >list
이 basename
유틸리티는 경로 이름의 파일 이름 부분을 반환하며, 두 번째 인수가 제공되면 이 인수는 각 이름 끝에서 제거되어야 하는 문자열로 처리됩니다.
위의 루프에서는 패턴과 일치하는 파일만 반복하고 /path/*.ear
접미사 없이 파일 이름을 추출한 .ear
다음 목록을 이름이 지정된 파일에 씁니다 list
.
이는 개행 문자가 포함된 파일 이름도 올바르게 처리합니다.
$'my.left.ear\ncollection 1.ear'
답변2
당신이 원하는 것:
ls *.ear | sed 's/\.ear$//' >list.txt
출력 사용이 마음에 들지 않으면 ls
다음을 수행할 수도 있습니다.
printf "%s\n" *.ear | sed 's/\.ear$//' >list.txt
printf
내장되지 않은(또는 ls
위의 형식을 사용하는) 셸에서는 이론적으로 인수 수 제한에 도달할 수 있지만 이러한 EAR 파일이 나에게 익숙한 파일이라면 인수 수 제한을 얻지 못할 것입니다. 수천.