![将某些文件从指定的子目录复制到单独的子目录中](https://linux22.com/image/66216/%E5%B0%86%E6%9F%90%E4%BA%9B%E6%96%87%E4%BB%B6%E4%BB%8E%E6%8C%87%E5%AE%9A%E7%9A%84%E5%AD%90%E7%9B%AE%E5%BD%95%E5%A4%8D%E5%88%B6%E5%88%B0%E5%8D%95%E7%8B%AC%E7%9A%84%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD.png)
我想将所有以“_CSF”结尾的子目录中的所有 .fastq 文件复制到另一个已创建的子目录 dir1_CSF 中。
我了解如何复制某些文件,但不了解如何从某些目录复制。
刚接触 shell 脚本,如果能提供一些帮助将会非常有用。
答案1
使用 shell,你可以这样做:
find *_CSF -type f -iname "*.fastq" -exec cp {} dir1_CSF/ \;
答案2
将 DIR 设置为顶级目录,将 TARGET 设置为目标目录。然后运行:
find $DIR \( -type d -name "$TARGET" -prune \) -o \
\( -type f -name "*.fastq" -exec cp -t "$TARGET" {} + \)
是的,就是这个命令。这是假设 GNU find 和 GNU fileutils为这些情况cp
提供了方便的-t
参数。
怎么运行的
该find
命令以$DIR
(无论您将其设置为什么)开头,查找与您的扩展名匹配的所有文件(但不包括$TARGET
目录下的任何文件)。然后它将所有这些文件名传递给cp
程序。