私はこのような問題を経験したことがありません。数字で番号付けされたフォルダがあるため、ファイル名が完全に異なるかどうか心配することなく、ファイルを繰り返すか、並列化を使用することもできます。
この場合、すべてのファイルをsample_1
ラベル付きフォルダに分割してsample_18
使用しました。とても簡単forループ:
for i in {1..18};
do
cd sample_${i}
mv *.fa sample_${i}.fa
mv *.gff sample_${i}.gff
mv *.bam sample_${i}.bam
mv *.sam sample_${i}.sam
cd ..
done
1〜9までは機能しますが、2桁の数字では機能しません。実際には、Sample_10ディレクトリが存在しないというエラーが発生します。 bashに関連する危険があります。ディレクトリ名を指定すると、10ではなく1になり、その後は0になるようですが、正直にどのように修正するかわかりません。誰にもアイデアがありますか?
編集する:
llコマンドで生成された内容を表示します。すべてのディレクトリがあります。
-rw-rw---- 1 anm5579 mls164_collab 644 Sep 18 11:18 contentsInfo
-rw-rw---- 1 anm5579 mls164_collab 44 Sep 27 16:07 fixdata.sh
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 27 15:59 sample_1
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 21 17:08 sample_10
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 18 10:59 sample_11
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 20 11:11 sample_12
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 21 17:12 sample_13
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 18 11:12 sample_14
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 18 11:11 sample_15
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 21 10:40 sample_16
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 20 11:08 sample_17
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 18 11:11 sample_18
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 27 15:59 sample_2
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 27 15:59 sample_3
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 27 15:59 sample_4
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 27 15:59 sample_5
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 27 15:59 sample_6
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 27 15:59 sample_7
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 27 15:59 sample_8
drwxrws--- 2 anm5579 mls164_collab 4096 Sep 27 15:59 sample_9
生成されたエラーは、サンプル10-18のディレクトリが見つからないことです。
hexdumpによって生成されたコンテンツを表示しますecho sample_* | hexdump -C
。
00000000 73 61 6d 70 6c 65 5f 31 20 73 61 6d 70 6c 65 5f |sample_1 sample_|
00000010 31 30 20 73 61 6d 70 6c 65 5f 31 31 20 73 61 6d |10 sample_11 sam|
00000020 70 6c 65 5f 31 32 20 73 61 6d 70 6c 65 5f 31 33 |ple_12 sample_13|
00000030 20 73 61 6d 70 6c 65 5f 31 34 20 73 61 6d 70 6c | sample_14 sampl|
00000040 65 5f 31 35 20 73 61 6d 70 6c 65 5f 31 36 20 73 |e_15 sample_16 s|
00000050 61 6d 70 6c 65 5f 31 37 20 73 61 6d 70 6c 65 5f |ample_17 sample_|
00000060 31 38 20 73 61 6d 70 6c 65 5f 32 20 73 61 6d 70 |18 sample_2 samp|
00000070 6c 65 5f 33 20 73 61 6d 70 6c 65 5f 34 20 73 61 |le_3 sample_4 sa|
00000080 6d 70 6c 65 5f 35 20 73 61 6d 70 6c 65 5f 36 20 |mple_5 sample_6 |
00000090 73 61 6d 70 6c 65 5f 37 20 73 61 6d 70 6c 65 5f |sample_7 sample_|
000000a0 38 20 73 61 6d 70 6c 65 5f 39 0a |8 sample_9.|
000000ab
答え1
問題が発生した場合は手動でテストし、段階的にデバッグします。
i=10
cd sample_${i}
mv *.fa sample_${i}.fa
mv *.gff sample_${i}.gff
mv *.bam sample_${i}.bam
mv *.sam sample_${i}.sam
cd ..
と表示されたらsample_10 doesn't exist
確認してください。
答え2
どこかにロジックに問題があり、Sample_9に重複したファイルがあるようです。これこれによりコマンドは失敗しますが、コメントを入力するのが面倒でオフラインになっているため、チャットに招待できません。以下を試してください。
#!/bin/bash
set -x
for i in {1..18};
do
(
cd "sample_${i}"
pwd
)
done
上記の結果を質問に入力してください。私たちはそこからそれを取ります。