从子目录复制一个文件

时间:2014-03-02 01:19:09

标签: bash copy wildcard subdirectory

亲爱的脚本专家, 作为脚本的新手,我非常感谢你的帮助。 我有一个简单的任务: 我有一组目录dir1 dirxy目录... 每个目录中都有一些文件,但我只想复制其中一个文件,比如一个以A ...开头的文件

在搜索此页面时,我找到了一个用于列出子目录的脚本:

for i in *
do                 # Line breaks are important
    if [ -d $i ]   # Spaces are important
        then
            "do some task"
    fi
done

做一些任务是个问题...... 我想将一个用A *声明的文件复制到另一个目录并将其重命名为B_nameofparentdirectory

非常感谢你 彼得

2 个答案:

答案 0 :(得分:1)

您可以通过以斜杠结尾来创建仅匹配glob的目录,这样您就可以编写脚本

for i in */; do
  "do some task"
done

在每个目录中,您可以使用break语句使内部循环仅处理第一个文件:

for i in */; do
  for f in "${i}"A*; do
    cp "$f" "$dest/B_$dest"
    break
  done
done

这将导致循环继续处理每个外部目录,但在每个目录中只会处理名为A *的第一个文件。

也就是说,您可以使用find命令直接完成此操作:

find . -mindepth 2 -maxdepth 2 -type f -name 'A*' -execdir cp {} "$dest/B_$dest" \;

答案 1 :(得分:0)

使用find

添加类似于其他答案的实现
for file in $(find . -name "A*" -type f)
do      
    cp ${file} ${destDir}/B_${destDir}
    break
done

您可以使用find来列出当前目录中的以A开头的所有文件。它的子目录。

find . -name "A*" -type f