Как найти определенные файлы и скопировать их в папку?

У меня есть папка (name250), которая содержит несколько подкаталогов. Я хочу, чтобы мой скрипт находил определенные файлы (от tE1_sys_250.txt до tE99_sys_250.txt) во всех подкаталогах и копировал их в другую папку (name250_sys).

Это мой сценарий, но когда я запускаю его, ничего не происходит.

#!/bin/bash
cd ~/name250/
mkdir ../name250_sys
for a in {10..99}
do
`find . -name tE$a'_sys'_250.txt -exec cp {} ./name250_sys/ \;`
done

Заранее спасибо.

3 ответа

Это выглядит неправильно:

cd /name250/

Это попыталось бы изменить каталог на каталог "name250", содержащийся в корневой папке. Я полагаю, вы хотите:

cd ../name250_sys

Попробуйте, если следующая строка поможет:

если вы ищете 1-99

find . -regextype posix-awk -regex '.*tE[0-9]{1,2}_sys_250\.txt' -exec cp {} ./name250_sys/ \;

и если вы ищете 10-99

find . -regextype posix-awk -regex '.*tE[0-9]{2}_sys_250\.txt' -exec cp {} ./name250_sys/ \;

Предполагая, что вы только хотите скопировать такие файлы

Я нашел решение. моей проблемой была последняя часть скрипта, в которую мне пришлось добавить строку " cd .." перед командой find. Тогда это работает.

#!/bin/bash
cd ~/name250/
mkdir ../name250_sys
cd ..
for a in {10..99}
do
`find . -name tE$a'_sys'_250.txt -exec cp {} ./name250_sys/ \;`
done
Другие вопросы по тегам