Как найти определенные файлы и скопировать их в папку?
У меня есть папка (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