さまざまなファイル形式のフォルダがありますが、.img
次のパターンを使用して拡張子を 。インファイルに興味があります。
ppi_noTD_d0_P_76con_0001.img
ppi_noTD_d0_P_104con_0001.img
ppi_noTD_d0_P_150con_0001.img
ppi_noTD_d0_P_201con_0001.img
etc.
変更されるファイル名の唯一の部分はP_XXX
部分です。
2つの.txtファイルを作成しました。各ファイルstable.txt
には、サブセットを別のフォルダに移動するために使用するサブセットのrecurring.txt
リストが含まれています(P_XXX
安定そしてまたそんなことが起こった、それぞれ)。たとえば、P_76
およびP_201
は次のとおりです。安定.txt、同時に、P_104
リストP_154
に表示されます。繰り返し.txt。
for loop
.txtファイルから関連コンテンツを返し、P_XXX
フォルダ内の.img
他のファイルfor loop
から一致を検索し、次の場所に移動しようとします。安定フォルダ:
for P in $(< stable.txt); do
for f in *"$P"*.img; do
echo mv - "$f" "./stable/$f"
done
done
リストされた正しい数値を返しますP_XXX
が、$f
完全なファイル名は返しません(ビットのみを返します*P_XXX
)。奇妙なことに、P_XXX
最後の.txtファイルの完全なファイル名を返します。ppi_noTD_d0_P_201_con_0001.img
通話に問題があるようで、$f
ファイルをそのフォルダに移動できません(安定そしてまたそんなことが起こった)。
この問題をどのように解決できますか?
編集する:
これは私が得た結果です。
*.img ./stable/*P_76
*.img ./stable/*P_86
*.img ./stable/*P_89
*.img ./stable/*P_90
*.img ./stable/*P_91
*.img ./stable/*P_99
*.img ./stable/*P_121
*.img ./stable/*P_128
*.img ./stable/*P_132
*.img ./stable/*P_136
*.img ./stable/*P_140
*.img ./stable/*P_144
*.img ./stable/*P_153
*.img ./stable/*P_156
*.img ./stable/*P_162
*.img ./stable/*P_180
*.img ./stable/*P_203
*.img ./stable/*P_205
*.img ./stable/*P_208
*.img ./stable/*P_211
*.img ./stable/*P_215
*.img ./stable/*P_229
*.img ./stable/*P_250
*.img ./stable/*P_256
mv - ppi_noTD_d0_P_257con_0001.img ./stable/ppi_noTD_d0_P_257con_0001.img
答え1
ファイルstable.txt
がWindowsシステムで作成または編集されている可能性があります。新しいチームキャリッジリターン+改行シーケンスとして表示されます(しばしばCR
LF
略語またはエスケープシーケンスを使用して引用\r\n
)。
たとえば、次のサンプルファイルを考えてみましょう。
printf '%s\r\n' P_76 P_201 >stable.txt
スクリプトが最初の行を読み取った後、ワイルドカード式は、ファイル名に*"$P"*.img
実際にキャリッジリターンが含まれていない限り何も一致しません。有効nullglob
なオプションがないか、それに対応するオプションがない場合、f
値は*P_76\r*.img
エコーされると、mv - "$f" "./stable/$f"
これら2つのCR
文字が後続のテキストを行の先頭に挿入し、既存のテキストを上書きします。
以下を使用して、ファイルのCR
LF
改行順序を確認できます。
$ cat -v stable.txt
P_76^M
P_201^M
または
$ od -An -c stable.txt
P _ 7 6 \r \n P _ 2 0 1 \r \n
または
$ file stable.txt
stable.txt: ASCII text, with CRLF line terminators
次の方法を使用して、Unix、LF 終了形式に変換できます。
$ dos2unix stable.txt