这个unix命令我还没有在Mac上工作 - 任何需要调整的想法:
find . | grep '.*\(css\|js\|rjs\|rhtml\|rb\)$' | sort | while read in; do printf "\n\n####\n# FILE: %s\n####\n\n" ${in} >> onebigfile; cat "${in}" >> onebigfile; done
感谢
答案 0 :(得分:2)
此命令的目的是在名为onebigfile(带分隔符)IIUC的文件中收集名称以所述(css ... rb)结尾的当前目录下的所有文件的内容。
要调试此类系列管道命令,您可以运行各个命令或单个命令组以尝试查看正在发生的事情。例如,尝试:
find .
find . | grep '.*\(css\|js\|rjs\|rhtml\|rb\)$'
find . | grep '.*\(css\|js\|rjs\|rhtml\|rb\)$' | sort
然后得到一行输出(例如./dir/file.css),并尝试:
echo './dir/file.css' | while read in; do echo ${in}; done
echo './dir/file.css' | while read in; do cat ${in}; done
echo './dir/file.css' | while read in; do cat ${in} >> onebigfile; done
你应该能够了解正在发生的事情。
问题可能是由于文件和目录名称包含空格。在这种情况下,解决方案是使用find -print0
命令。