Некоторые базовые оболочки пропускают команды вроде «find», а некоторые из их команд не поддерживают рекурсию. В этом случае вы можете использовать этот скрипт для запуска нужной команды во всех поддиректорах в дереве:
CDIR=$(pwd)
for i in $(ls -R | grep :); do
DIR=${i%:} # Strip ':'
cd $DIR
$1 # Your command
cd $CDIR
done
Если вы назовете вышеупомянутое «recurse.sh», используйте:
./recurse.sh <command>
Пример (измените владельца / группу на «root» всех файлов в дереве):
./recurse.sh "chown 0:0 *"
Что ж, это кажется довольно очевидным, поэтому я могу упустить something
javac *.java
(С соответствующими ссылками на библиотеки и т. д.)
Или, возможно:
javac -d bin *.java
чтобы javac создал правильную структуру каталогов для вывода.
Вы искали что-то более сложное? Если да, не могли бы вы дать больше подробности (а также на какой платформе вы находитесь)?
Вот фрагмент кода, который я использую для создания целого проекта, где, как обычно, исходные файлы находятся в глубоко вложенной иерархии и есть много .jar файлов, которые должны быть в classpath (требуются утилиты UNIX):
CLASSPATH=
for x in $(find | grep jar$); do CLASSPATH="$CLASSPATH:$x"; done
SRC=$(find | grep java$)
javac -cp "$CLASSPATH" $SRC