如何查找某些文件并将其复制到文件夹中?

时间:2014-05-11 13:38:11

标签: linux bash find cp

我有一个包含多个子目录的文件夹(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 个答案:

答案 0 :(得分:1)

这看起来不对:

cd /name250/

这会尝试将目录更改为根文件夹中包含的“name250”目录。我想你想要:

cd ../name250_sys

答案 1 :(得分:0)

我找到了解决方案。我的问题是脚本的最后一部分,我不得不添加一行" cd .."在找到命令之前。然后,它有效。

#!/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

答案 2 :(得分:0)

尝试以下一行会有所帮助:

如果您正在寻找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/ \;

假设您只想复制此类文件