Я хочу 'git rm' собрать кучу файлов, найденных командой 'find'. Файлы должны иметь определенный суффикс. Я получил это:gbash 'git rm' несколько файлов, найденных командой 'find'
TEST_PATH='/usr/src'
function main() {
for i in "[email protected]"
do
echo "current i = ${i}"
COMMAND='find $TEST_PATH -maxdepth 20 -name '*_${i}.txt' -exec git rm {} \;'
# COMMAND="$(find $TEST_PATH -maxdepth 20 name '*_${i}.txt' -print0 | xargs -0 -I{} cp {} .)"
# COMMAND="find $TEST_PATH -maxdepth 20 -name '*_${i}.txt' -exec cp {} . \;"
# COMMAND="find . '*.BUILD' | while read file; do echo "$file"; done \;"
done
echo "Running Command: $COMMAND"
$COMMAND
}
gbash::main "[email protected]"
Забегая выдаст сообщение об ошибке, как это:
$ sh abc.sh 123
current i = 123
Running Command: find ../../src/python/servers/innertube/tests/ -maxdepth 20 -name "*_9421870.txt" -exec rm {}\;
find: missing argument to `-exec'
Я прочитал и перепробовал все решения на StackOverflow (см закомментирована код), но ни один не работает .. .
Почему вы храните команду в переменной? [Я пытаюсь поместить команду в переменную, но сложные случаи всегда терпят неудачу!] (Http://mywiki.wooledge.org/BashFAQ/050). Просто выполните его нормально и отлаживайте, пишите что-то вроде 'echo git rm {} \;'. – fedorqui