ファイルの特定のコピー

ファイルの特定のコピー

同じサフィックス(0から310まで)を持つファイルとディレクトリがあります。file(0)にコピーしdirectory(0)file(10)までdirectory(10)続けfile(310)たいですdirectory(310)

一度にコピーする方法はありませんか?

答え1

ファイルを繰り返してそのディレクトリに移動します。

for FILE in *; do 
if [[ -f "$FILE" ]]; then 
    echo mv "$FILE" "dir${FILE##file}";
fi
done
  • if [[ -f "$FILE" ]]; then、ディレクトリではなくファイル$FILEであることを確認してください。-f-d
  • ${FILE##file}、(最後のプレフィックスまで切り取る)は、fileファイル名からプレフィックスを削除し、数字部分のみを保持します。
  • echo実際に動く前に練習する必要があります。

出力例:

file0 --> dir0
file1 --> dir1
file2 --> dir2
file3 --> dir3

修正する: ファイル名に同様のサフィックスがある場合は、file##.xyz次のスクリプトを使用できます。

for FILE in *; do
    if [[ -f "$FILE" ]]; then
    dname="${FILE##file}";
    echo mv "$FILE" "dir${dname%.inp}";
fi
done

${dname%.inp}コードのこの部分(最初のサフィックスに切り捨てる)は、前にプレフィックスを削除した.inpファイル名の末尾を削除するため、数値部分のみが生成されます。${FILE##file}file

または、以下のように使用することもできます。

for FILE in *; do
    if [[ -f "$FILE" ]]; then
    echo mv "$FILE" "dir${FILE//[^0-9]/}";
fi
done

関連情報