使用重命名的输出使目录不重命名文件
use the output of rename to make directory wo renaming the files
我有一个包含多个文件的目录,它们都以“_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 结尾的文件,保留文件名的前 10 个字符(ERR32.....)并创建一个目录有了那个
因此目录看起来像
ERR3258060
ERR3258861
使用 bash 目前我已经尝试了以下方法
for f in *_1.fastq.gz
do
echo $f | rename -n 's/_1.fastq.gz//' * | mkdir
done
该命令以我想要的方式生成文件名,但 mkdir 不会获取重命名的输出,它只会说 "missing operand"
如何让 mkdir 获取上一个命令的结果?
谢谢
无需使用rename
。您可以只使用 sed
。
在第一步中,您创建目录名称,然后在 mkdir
.
中使用它
for f in *_1.fastq.gz
do
dir=$(echo $f | sed 's/_1.fastq.gz//')
mkdir $dir
done
我有一个包含多个文件的目录,它们都以“_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 结尾的文件,保留文件名的前 10 个字符(ERR32.....)并创建一个目录有了那个
因此目录看起来像 ERR3258060 ERR3258861
使用 bash 目前我已经尝试了以下方法
for f in *_1.fastq.gz
do
echo $f | rename -n 's/_1.fastq.gz//' * | mkdir
done
该命令以我想要的方式生成文件名,但 mkdir 不会获取重命名的输出,它只会说 "missing operand" 如何让 mkdir 获取上一个命令的结果?
谢谢
无需使用rename
。您可以只使用 sed
。
在第一步中,您创建目录名称,然后在 mkdir
.
for f in *_1.fastq.gz
do
dir=$(echo $f | sed 's/_1.fastq.gz//')
mkdir $dir
done