第一个帖子,很高兴成为这个社区的一部分。
我是一个初学者,主要使用命令行进行下一代测序(NGS)分析。
我有一个文件列表,其中包含来自音序器的数据,如下所示:
[agh8423@quser12 all_fastq]$ ls Bio5* -al
-rw-r--r-- 1 agh8423 p30592 253029870 Jul 19 11:10 Bio5-H3K27ac-Dox-no_S5_L001_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 248177942 Jul 19 11:11 Bio5-H3K27ac-Dox-no_S5_L002_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 256860841 Jul 19 11:11 Bio5-H3K27ac-Dox-no_S5_L003_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 253399957 Jul 19 11:12 Bio5-H3K27ac-Dox-no_S5_L004_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 246636194 Jul 19 11:12 Bio5-H3K27ac-Dox-yes_S6_L001_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 242114964 Jul 19 11:13 Bio5-H3K27ac-Dox-yes_S6_L002_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 249862612 Jul 19 11:13 Bio5-H3K27ac-Dox-yes_S6_L003_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 247798281 Jul 19 11:14 Bio5-H3K27ac-Dox-yes_S6_L004_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 234917538 Jul 19 11:14 Bio5-H3K4me3-Dox-no_S3_L001_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 230571628 Jul 19 11:14 Bio5-H3K4me3-Dox-no_S3_L002_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 233025109 Jul 19 11:15 Bio5-H3K4me3-Dox-no_S3_L003_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 230268463 Jul 19 11:15 Bio5-H3K4me3-Dox-no_S3_L004_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 246254343 Jul 19 11:15 Bio5-H3K4me3-Dox-yes_S4_L001_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 241866406 Jul 19 11:16 Bio5-H3K4me3-Dox-yes_S4_L002_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 247044518 Jul 19 11:16 Bio5-H3K4me3-Dox-yes_S4_L003_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 243759599 Jul 19 11:17 Bio5-H3K4me3-Dox-yes_S4_L004_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 251009676 Jul 19 11:17 Bio5-Input-Dox-no_S1_L001_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 246054510 Jul 19 11:18 Bio5-Input-Dox-no_S1_L002_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 255798685 Jul 19 11:18 Bio5-Input-Dox-no_S1_L003_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 253896496 Jul 19 11:19 Bio5-Input-Dox-no_S1_L004_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 232179873 Jul 19 11:19 Bio5-Input-Dox-yes_S2_L001_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 227146014 Jul 19 11:19 Bio5-Input-Dox-yes_S2_L002_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 236543332 Jul 19 11:20 Bio5-Input-Dox-yes_S2_L003_R1_001.fastq.gz
-rw-r--r-- 1 agh8423 p30592 234698786 Jul 19 11:20 Bio5-Input-Dox-yes_S2_L004_R1_001.fastq.gz
如果您注意到,除了文件名的“ L001 / 2/3/4”部分不同之外,其他文件名几乎相同。这些本质上是重复的样本,对于下游流程,我想连接这些文件(但此信息可能与我的问题无关)
我想要的是:创建一个父目录,目录名称应为“ _S(*)_ L00(1/2/3/4)_Ri_001.fastq.gz”左侧的所有内容(例如,第一个文件将具有一个名为“ Bio5-H3K27ac-Dox-no”的目录。除了创建该目录外,我还希望将所有具有上述文件前缀的文件(意味着所有名称为Bio5-H3K27ac-Dox-no的L001 / 2/3/4)放入该新目录中。在那里的计划是运行zcat并将文件串联到一个文件中,这将更易于分析。
以下是我的尝试:
for file in ./*_L001_R1_001.fastq.gz.txt; do
dir=${file%_L001_R1_001.fastq.gz.txt}
mkdir -p "./$dir" &&
mv -iv "$file" "./$dir"
mv -iv "$dir"_L00* "./$dir"
done
如果我是我的目录,则会得到以下内容。
[agh8423@quser11 test]$ ls -al
total 36
drwxrwsr-x 8 agh8423 p30592 4096 Jul 22 18:27 .
drwxrwsr-x 3 agh8423 p30592 32768 Jul 22 17:27 ..
drwxrwsr-x 2 agh8423 p30592 4096 Jul 22 18:27 Bio1-Input-Dox-no_S12
drwxrwsr-x 2 agh8423 p30592 4096 Jul 22 18:27 Bio1-Input-Dox-yes_S11
drwxrwsr-x 2 agh8423 p30592 4096 Jul 22 18:27 Bio1-MYC-Dox-no_S2
drwxrwsr-x 2 agh8423 p30592 4096 Jul 22 18:27 Bio1-MYC-Dox-yes_S3
drwxrwsr-x 2 agh8423 p30592 4096 Jul 22 18:27 Bio1-WDR5-Dox-no_S5
drwxrwsr-x 2 agh8423 p30592 4096 Jul 22 18:27 Bio1-WDR5-Dox-yes_S10
-rwxrwxr-x 1 agh8423 p30592 178 Jul 22 18:29 test1.sh
我不想要的部分是目录名称末尾的_S12等,但我希望它保留在移至新目录的文件名中。
-奥斯丁
答案 0 :(得分:3)
获取建议并对其进行完善:
<?php
$input = fopen("startfile.csv", "r");
$output = fopen("endfile.csv", "w");
if ($input) {
while (($line = fgets($input)) !== false) {
// process the line read.
echo $line;
if (strpos($line,'" f5="') !==false) {
//echo "Yes";
} else {
//echo "No";
$line = str_replace('" f6="', '" f5="NA" f6="', $line);
}
if (strpos($line,'" f4="') !==false) {
//echo "Yes";
} else {
//echo "No";
$line = str_replace('" f5="', '" f4="NA" f5="', $line);
}
if (strpos($line,'" f3="') !==false) {
//echo "Yes";
} else {
//echo "No";
$line = str_replace('" f4="', '" f3="NA" f4="', $line);
}
echo $line;
fwrite($output, $line);
}
fclose($input);
} else {
// error opening the file.
}
?>
最后一个移动命令将引发错误,因为它将尝试将for file in ./*_L001_R1_001.fastq.gz.txt; do
# $file will contain a relative folder and filename:
# ./Bio5-H3K27ac-Dox-no_S5_L001_R1_001.fastq.gz
# We are going to extract the filename and alter it to keep
# the interesting part
dir=$(basename "$file" | cut -f1 -d_)
# Now, create the folder in the current workind directory
mkdir -p "$dir"
# Finally, move all the files that start with that
# prefix to the new folder
mv -iv "${dir}"* "$dir"
done
移动到$dir
中,这是不可能的。但是其他文件将被移动并且作业将完成。如果要执行更简洁的处理,则必须选择要移动的文件(并排除不想移动的文件夹):
$dir