소스 디렉토리 (/ foo/source)에서 csv 파일을 찾고, 꼬리를 사용하여 처음 233 줄을 잘라내어 다른 디렉토리의 파일에 저장하는 작업 솔루션이 있습니다 (예 : an earlier question I asked)./foo/dest) :Makefile에서 xargs 기본 이름 사용
find /foo/source -name "*.csv" | xargs -I '{}' sh -c 'tail -n +232 {} > /foo/dest/$(basename {})'
이 기능은 bash에서 실행 중일 때 유용합니다.
은 메이크 대상에서 동일한 명령이 실패 내 문제가있다 :
copyfiles:
find /foo/source -name "*.csv" | xargs -I '{}' sh -c 'tail -n +232 {} > /foo/dest/$(basename {})'
make copyfiles
SH : /foo/dest//foo.source/somecsv.csv : 해당 파일이나 디렉토리
저장시 원본 파일의 전체 경로 + 파일 이름을 사용하기 때문에 Make에서 basename 명령이 더 이상 작동하지 않는 것 같습니다.
왜 이런 일이 발생하며이 문제를 해결할 수있는 방법이 있습니까? 내가하는 일을 성취 할 수있는 더 쉬운 방법이 있습니까? 나는 CSV 파일, 꼬리에 대한 폴더를 검색하고 다른 위치에 저장해야합니다.
감사합니다.
https://www.gnu.org/software/make/manual/html_node/Variables-in-Recipes.html'$ '가있는 서브 쉘을 "바르"라고 가정하십시오. – 123
포인터 @ 123 주셔서 감사합니다. 정렬. 감사 –