从子目录中复制一个文件



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

搜索此页面,我发现了一个用于列出子目录的脚本:

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

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

谢谢切赫

您可以通过

以斜杠结尾来使 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" ;

使用 find 添加类似于其他答案的实现

for file in $(find . -name "A*" -type f)
do      
    cp ${file} ${destDir}/B_${destDir}
    break
done

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

find . -name "A*" -type f

相关内容

  • 没有找到相关文章

最新更新