我有一个包含多个文件的目录,它们都以“ _1.fastq.gz”或“ _2.fastq.gz”结尾
ERR3258060_1.fastq.gz
ERR3258060_2.fastq.gz
ERR3258861_1.fastq.gz
ERR3258861_2.fastq.gz
我要做的(第一步)是获取所有以_1.fastq.gz结尾的文件,并保留文件名(ERR32 .....)的前10个字符,并使用该文件创建目录
因此目录看起来像 ERR3258060 ERR3258861
到目前为止,我已经使用bash尝试了以下操作
for f in *_1.fastq.gz
do
echo $f | rename -n 's/_1.fastq.gz//' * | mkdir
done
该命令以我想要的方式生成文件名,但mkdir不会采用重命名的输出,它只会说“缺少操作数” 如何使mkdir接受上一条命令的结果?
谢谢
答案 0 :(得分:1)
无需使用rename
。您可以只使用sed
。
第一步,创建目录名称,然后在mkdir
中使用它。
for f in *_1.fastq.gz
do
dir=$(echo $f | sed 's/_1.fastq.gz//')
mkdir $dir
done