シェルスクリプトを使ってファイルを別のフォルダーにコピーする

コピーしたいファイルがリストアップされているファイルを読み込み、別のフォルダーに同じ階層毎でコピーするシェルスクリプトです。

コピー元のパスを読み込み、コピー先にディレクトリーが無ければディレクトリーも作成してファイルをコピーします。

Windows上でlinuxコマンドやシェルスクリプトを実行できるbusyboxというツールを使えばWindows上でも、このシェルスクリプトを実行することができてWindowsファイルのコピーが簡単に行うことができます。

busyboxのダウンロード方法やインストール方法は本サイトでもご紹介しておりますのでぜひご覧ください(^^♪

簡単で便利なシェルスクリプトです。ちょっとした作業の効率アップにお使い下さい。

シェルスクリプトを使ってファイルを別のフォルダーにコピーする

上の図にある構成にもとづいて作成したシェルスクリプトがこれ↓になります。

コピー元のパスとファイル名を記述したリストファイル「list.txt」を読み込んで、同じディレクトリー階層でコピー先のディレクトリーにコピーをするシェルスクリプトです。

while read line
do
 dirn=$(dirname ${line})
 filen=$(basename ${line})
 Chgdirn=${dirn/temp/temp2}
 # echo $Chgdirn
 if [ -d $Chgdirn ]; then
  echo “ディレクトリーが既に存在しています”
 else
  mkdir -p $Chgdirn
 fi
 echo “*** $dirn/$filenをコピー開始 ***”
 cp $dirn/$filen $Chgdirn
 echo “*** $dirn/$filenをコピー終了 ***”
done < ./list.txt

 

シェルスクリプトの説明

dirname ディレクトリ名とファイル名を含むパス名からファイル名の部分だけを除き、ディレクトリ部分だけを取得するコマンドを使って、「list.txt」から読み込んだ1行を処理します。
basename ディレクトリ名とファイル名を含むパス名から、ディレクトリ部分を除き、ファイル名だけを取得するコマンドを使って、「list.txt」から読み込んだ1行を処理します。
Chgdirn 読み込んだパスのディストリビューションtempをtemp2に変更しChgdirnに格納します。
if [ -d $Chgdirn ] -d オプションでディレクトリーの有無を確認。また、-fオプションにするとファイルの有無を確認することができます。-eオプションにするとファイルやディレクトリーの有無を確認することができます。
mkdir -p  -pオプションを指定することで親ディレクトリーが存在しなくてもサブディレクトリーまで作成してくれます。
list.txt コピー元のファイルのパスとファイル名がリストされています。

※筆者の環境で問題なく動作することは確認しておりますが、環境によっては上手く動作しないことも考えられますので自己責任で実行するようお願い致します。

 

 

Windowsでlinuxコマンドを実行できるツールbusybox

Linuxに慣れてくるとWindowsが不便に感じることがありませんか?

たとえば、”grepがしたい” とか ”シェルやawkを使いたい”などなど。。。

”もっと手軽にlinuxコマンドが使えたら”って思うことはないでしょうか。

WindowsにもlinuxのようなCLIコマンド(DOSプロンプト)や、PowerShellといった環境はありますが、Linuxに慣れてしまっていると使いづらいと感じるのではないでしょうか。

Windows上でHyper-VやVMwareなどの仮想環境を作ってlinux OSを動かしたり、Unixコマンドを詰め合わせたツール(Cygwinなど)をインストールして使うという方法もありますが手軽に使うにはちょっと重たく感じます。

Windows 10 Fall Creators Update(バージョン1709)から「Windows Subsystem for Linux(WSL)」が正式版が提供されましたね。

このWSLを有効にすることで「bash」などのシェルが、Windows 10上で利用できるようになります。

しかし、Windows10でない方は諦めるしかないのでしょうか?

そんなことはありません(^^♪

今回ご紹介するツール「busybox」はWindows10でなくても、Linuxコマンドやシェルなどを手軽に使うことができます!

Windows上でLinuxコマンドやシェルを使ってもっとパソコンを快適に使いたいと考えられるている方に「busybox」をご紹介致します。

Windowsでlinuxコマンドを実行できるツールbusybox

こちらがbusyboxで使用できるコマンドです。

ar, arch, ash, awk, base64, basename, bash, bunzip2, busybox, bzcat, bzip2, cal, cat, chmod, cksum,clear, cmp, comm, cp, cpio, cut, date, dc, dd, df, diff, dirname, dos2unix, dpkg, dpkg-deb, du, echo, ed,egrep, env, expand, expr, factor, false, fgrep, find, fold, fsync, ftpget, ftpput, getopt, grep, groups,gunzip, gzip, hd, head, hexdump, iconv, id, ipcalc, kill, killall, less, link, ln, logname, ls, lzcat, lzma,lzop, lzopcat, man, md5sum, mkdir, mktemp, mv, nc, nl, od, paste, patch, pgrep, pidof, pipe_progress, pkill,printenv, printf, ps, pwd, readlink, realpath, reset, rev, rm, rmdir, rpm, rpm2cpio, sed, seq, sh, sha1sum,sha256sum, sha3sum, sha512sum, shred, shuf, sleep, sort, split, ssl_client, stat, strings, su, sum, tac, tail,tar, tee, test, timeout, touch, tr, true, truncate, ts, ttysize, uname, uncompress, unexpand, uniq, unix2dos,unlink, unlzma, unlzop, unxz, unzip, usleep, uudecode, uuencode, vi, watch, wc, wget, which, whoami, whois,xargs, xxd, xz, xzcat, yes, zcat

 

busyboxのインストール方法です。

1. Download

下記のURLからbusyboxをダウンロードします。
http://frippery.org/busybox/

busyboxのインストール方法

2. Installation

busybox64.exe –install インストールするディレクトリー名

(例) busybox64.exe –install c:¥busybox64
※インストールディレクトリーは予め作成しておくこと

3. 環境変数の設定でpathを設定する

検索ウィンドウから「環境変数」を入力し検索する。
「Path」のところ選択し、「編集」をクリックします。

busyboxのインストール方法

「環境変数名の編集」が開いたら「新規」をクリックして、busyboxをインストールしたフォルダーを追加します。

busyboxのインストール方法