этот однострочный сценарий оболочки не работает на Mac - есть идеи, как это исправить? - PullRequest
0 голосов
/ 31 марта 2010

Эта unix-команда, с которой я еще не совсем поработал, - любые идеи, которые нужно настроить:

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

спасибо

1 Ответ

2 голосов
/ 31 марта 2010

Цель этой команды - собрать содержимое всех файлов в текущем каталоге, чьи имена оканчиваются (css ... rb), в файл с именем onebigfile (с разделителями) IIUC.

Чтобы отладить этот тип последовательных команд, вы можете запустить отдельные команды или отдельные группы команд, чтобы попытаться увидеть, что происходит. Например, попробуйте:

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.

...