0
我有一個從an earlier question I asked的工作解決方案,用於在源目錄(/ foo/source)中查找csv文件,使用尾部砍掉前233行,並將其保存到不同目錄中的文件/ foo/dest):在Makefile中使用xargs basename
find /foo/source -name "*.csv" | xargs -I '{}' sh -c 'tail -n +232 {} > /foo/dest/$(basename {})'
在bash中按原樣運行時,此功能非常有用。
我的問題是在一個Makefile目標完全相同的命令失敗:
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。排序。謝謝 –