У меня небольшая ошибка, и я не знаю, как ее решить. Я хочу скопировать файлы из большой папки со многими файлами, где файлы содержат определенную строку. Для этого я использую grep, ack или (в этом примере) ag. Когда я нахожусь в папке, это сопоставляет без проблем, но когда я хочу сделать это с циклом по файлам в следующем скрипте, оно не проходит по совпадениям. Вот мой сценарий:
ag -l "${SEARCH_QUERY}" "${INPUT_DIR}" | while read -d $'\0' file; do
echo "$file"
cp "${file}" "${OUTPUT_DIR}/${file}"
done
SEARCH_QUERY содержит строку, которую я хочу найти внутри файлов, INPUT_DIR - это папка, в которой находятся файлы, OUTPUT_DIR - папка, в которую следует скопировать найденные файлы. Что-то не так с while do?
EDIT:
Спасибо за предложения! Я взял этот сейчас, потому что он также ищет файлы в подпапках и сохраняет список со всеми файлами.
ag -l "${SEARCH_QUERY}" "${INPUT_DIR}" > "output_list.txt"
while read file
do
echo "${file##*/}"
cp "${file}" "${OUTPUT_DIR}/${file##*/}"
done < "output_list.txt"