我有两个问题。
我有一个file.txt,每行的名称是一个例子,
specie1
specie2
specie3
...
,我想在以下每个路径中创建一个名为new_dir的新目录
/specie_1/run_busco/run_specie_1_ok_v3/
/specie_2/run_busco/run_Specie_2_ok_v3/
/specie_3/run_busco/run_Specie_3_ok_v3/
获取:
/specie_1/run_busco/run_specie_1_ok_v3/new_dir
/specie_2/run_busco/run_Specie_2_ok_v3/new_dir
/specie_3/run_busco/run_Specie_3_ok_v3/new_dir
第二个问题是相同的,但现在我想将一些文件移到创建的new_dir中,例如,我会将一些文件移到run_specie_X_ok_v3 /中,例如:
/specie_1/run_busco/run_specie_1_ok_v3/
seq1.faa
seq2.faa
seq3.faa
/specie_2/run_busco/run_Specie_2_ok_v3/
seq1.faa
seq2.faa
seq3.faa
/specie_3/run_busco/run_Specie_3_ok_v3/
seq1.faa
seq2.faa
seq3.faa
我想对所有目录执行mv *faa new_dir
。
您知道如何操作吗?我的意思是我的问题是因为路径始终根据specie_name改变。
我试图做这样的事情:
cat file.txt | while read line
do
echo mkdir '/'$file'/run_busco/run_'$file'_ok_v3/new_dir'
done
,然后运行所有生成的脚本。 与第二个问题相同:
cat file.txt | while read line
do
echo mv '/'$file'/run_busco/run_'$file'_ok_v3/*.faa new_dir'
done
答案 0 :(得分:1)
将$file
替换为$line
,而您不需要回声
cat file.txt | while read line; do mkdir "/$line/run_busco/run_$line_ok_v3/new_dir"; done
cat file.txt | while read line; do mv "/$line /run_busco/run_${line}_ok_v3/*.faa new_dir"; done