mv
新しく作成したディレクトリに特定の拡張子を持つファイルを追加したいと思います。スクリプトは、新しく作成されたすべてのフォルダからすべての拡張子を持つファイルを移動しますが、これは意図されていません。代わりに、拡張関連ファイルを特定のフォルダに移動する必要があります。どうすればいいですか?
for i in 1 2 3
do
mkdir -p backup/ch0${i}
if [ $? -eq ]; then
echo "directory backup/ch0${i} created"
for j in c h sh
do
count=0
count=`expr $count + 1`
if [ $count==i ]; then
cp /home/owner/*.${j} backup/ch0${i}
if [ $count!=i ]; then
continue;
elif [ $? -ne 0 ]; then
break 2;
fi
done
else
echo "could not back up directory!!"
fi
done
答え1
これは働きます:
backup_extensions()
{
count=0
while [ -n "$1" ]
do
let count+=1
mkdir -p backup/ch0${count}
cp /home/owner/*.${1} backup/ch0${count} || return 2
shift
done
}
backup_extensions c h sh
答え2
まだ確認していませんが、正常に動作します。
backups=( 1:c 2:h 3:sh )
for set in "${backups[@]}"; do
IFS=":" read dir_bkup file_ext <<< "$set"
if ! mkdir -p "backup/ch0$dir_bkup"; then
echo "Could not create "backup/ch0$dir_bkup. Skipping"
continue
fi
cp "/home/owner/"*".$file_ext" "backup/$dir_bkup/"
done