で持っている二つのディレクトリ finch_data/filteredfirst /ファイルと を整列 は、ファイル名の一部からフォルダを作成し、そこにファイルを対応する移動 - のbashスクリプト
firstZBND1X.sam
firstZBND2V.sam
firstZBND3X.sam
firstZBND4X.sam
firstZBND5X.sam
と finch_data/filteredsec /整列
secZBND1X.sam
secZBND2V.sam
secZBND3X.sam
secZBND4X.sam
secZBND5X.sam
私はフォルダを作成しました。 finch_data/filteredsec/combined 私はすべての最初の* .samとsec * .samファイルを移動しました。
ここでは、接頭辞firstまたはsecと.samの間にファイルmanesを使用して個別のサブフォルダを作成する必要があります。したがって、フォルダは次のようになります:
ZBND1X
ZBND2V
ZBND3X
ZBND4X
ZBND5X
そして、これらの名前の文字列のファイルを対応するフォルダに移動する必要があります。
誰かがこれを行うには1行のbashを使用していますか?
#!/bin/bash
prefix=first
for file in ${prefix}*; do
base="${file%.sam}"
dir="${base#$prefix}"
mkdir -p "$dir"
mv "$file" "$dir"
done
をそれはかわいいonelinerではありません。
これは私が他のフォーラム
find . -name "*.sam" -exec sh -c 'mkdir "${1%.*}" ; mv "$1" "${1%.*}" ' _ {} \;
または、finch_data/filtered * do ... 'とそれから' prefix = $ {i ## * filtered} 'を使って、それを微調整するだけです。 –
できます。私はちょうど私の答えを "path-agnostic"にしたいと思っていました。 :) – randomir
いいえ、私はちょうど良い方法であなたの答えが好きです。私はちょうどそれに考えを追加コメントを落とした '): –