如何筛选子目录中含ATAC/RNA的文件并分类移入新文件夹
问题描述


各位好,我该如何将所有名称包含ATAC和RNA的文件分别移入独立文件夹?当前目录下有多个子目录,其中存放着名称含ATAC和RNA的fastq文件;若文件直接存于当前目录,我可通过RNA和ATAC筛选,但文件位于子目录中,请问该如何筛选这两类文件并分别移入对应的新建独立文件夹(一个存ATAC文件,一个存RNA文件)?
解决方案
步骤1:创建目标文件夹
先在当前目录下创建两个用于分类存放文件的文件夹:
mkdir -p ATAC_files RNA_files
-p参数确保即便文件夹已存在,命令也不会报错。
步骤2:移动含ATAC的文件
用find命令递归遍历所有子目录,定位文件名包含ATAC的文件并移动到目标文件夹:
find . -type f -name "*ATAC*" -exec mv {} ATAC_files/ \;
如果担心重名文件被覆盖,可添加-n参数(跳过已存在的同名文件):
find . -type f -name "*ATAC*" -exec mv -n {} ATAC_files/ \;
步骤3:移动含RNA的文件
用同样逻辑处理RNA相关文件:
find . -type f -name "*RNA*" -exec mv {} RNA_files/ \;
避免覆盖的版本:
find . -type f -name "*RNA*" -exec mv -n {} RNA_files/ \;
命令说明
find .:从当前目录开始,递归遍历所有子目录-type f:仅匹配文件(忽略目录本身)-name "*ATAC*":匹配文件名中包含ATAC的文件(*代表任意长度的任意字符)-exec mv {} 目标目录/ \;:对每个找到的文件执行移动操作,{}指代当前找到的文件
内容的提问来源于stack exchange,提问作者user25645294
相关产品推荐
相关产品推荐

