반응형
디렉토리의 각 파일에 대한 Linux 쉘 펼쳐 파일 이름을 갖춘 프로그램 실행
시나리오 :
Linux 시스템의 폴더. 폴더의 모든 .xls 파일을 반복하고 싶습니다.
이 폴더는 일반적으로 다양한 폴더, 다양한 파일 형식 (.sh, .pl, .csv, ...)으로 구성됩니다.
내가 원하는 것은 루트의 모든 파일을 반복 하고 .xls 파일에서만 프로그램을 실행하는 것입니다.
편집하다 :
문제는 내가 실행해야하는 프로그램이 .xls에서 .csv 형식으로 변환하는 'xls2csv'라는 것입니다. 따라서 각 .xls 파일은 파일 이름을 가져 와서 .csv에 추가해야합니다.
예를 들어, test.xls 파일이 xls2csv의 인수는 다음과 가능합니다. xls2csv test.xls test.csv
내가 말이 되었습니까?
세게 때리다 :
for f in *.xls ; do xls2csv "$f" "${f%.xls}.csv" ; done
상기 봐 찾기 명령.
당신이 찾고있는 것은 다음과 가능합니다.
find . -name "*.xls" -type f -exec program
포스트 편집
find . -name "*.xls" -type f -exec xls2csv '{}' '{}'.csv;
자연 스럽다 xls2csv file.xls file.xls.csv
원하는 것에 더 가까이.
for i in *.xls ; do
[[ -f "$i" ]] || continue
xls2csv "$i" "${i%.xls}.csv"
done
첫-th 줄의 do
은 "일치하는"파일이 실제로 존재하는지 확인합니다., 일치 여부에서 for
하는 항목 do
이없는 경우은 "* .XLS"로 실행됩니다 $i
. 이 xls2csv
.
find . -type f -name "*.xls" -printf "xls2csv %p %p.csv\n" | bash
bash 4 (재귀)
shopt -s globstar
for xls in /path/**/*.xls
do
xls2csv "$xls" "${xls%.xls}.csv"
done
반응형
'ProgramingTip' 카테고리의 다른 글
최대 로깅 모드 로깅 콘솔 출력 (0) | 2020.10.20 |
---|---|
string.xml 파일에 "-"를 넣는 방법 (0) | 2020.10.20 |
UIAppearance 프록시를 통해 어떤 속성을 접근 할 수 있습니까? (0) | 2020.10.20 |
버튼에 그림자를 제공하는 방법 (0) | 2020.10.20 |
epoll, poll, threadpool의 차이점은 무엇입니까? (0) | 2020.10.20 |