#navi(../)

* 隠しファイルも含めcp,mvする方法 [#uba9ae88]
ドット(.)からはじまる隠しファイルも含めてコピーするとき、cp * や mv * では、~
隠しファイルが対象になりません。~
以下に隠しファイルを含めた mv および cp の実行例を以下に記します。

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* テスト環境 [#abad5a05]
以下のコマンドでディレクトリおよびファイルを作成します。
 mkdir src dst
 touch src/a.txt src/b.txt src/.conf
実行例
 sakura@hpmini:~$ touch src/a.txt src/b.txt src/.conf
 sakura@hpmini:~$ ls -al src/
 合計 8
 drwxrwxr-x  2 sakura sakura 4096 12月 14 19:54 .
 drwxr-xr-x 44 sakura sakura 4096 12月 14 19:54 ..
 -rw-rw-r--  1 sakura sakura    0 12月 14 19:54 .conf
 -rw-rw-r--  1 sakura sakura    0 12月 14 19:54 a.txt
 -rw-rw-r--  1 sakura sakura    0 12月 14 19:54 b.txt

* 隠しファイルも含めcp, mvする方法(正規表現を使う) [#jb84c94e]
以下の例では、*にてファイルをすべて(隠しファイルを除く)と隠しファイルを指定し、srcからdstにmvしてみます。~
以下のlsで隠しファイルのみ表示することができます。
 $ cd src
 $ ls .[^\.]*
 .conf
なので、
 mv * .[^\.]* ../dst
でsrcディレクトリからdstディレクトリに移動することができます。

実行例
 sakura@hpmini:~/src$ mv * .[^\.]* ../dst/
 sakura@hpmini:~/src$ ls -al
 合計 8
 drwxrwxr-x  2 sakura sakura 4096 12月 14 20:03 .
 drwxr-xr-x 44 sakura sakura 4096 12月 14 19:54 ..
 sakura@hpmini:~/src$ ls -a ../dst/
 .  ..  .conf  a.txt  b.txt

cpも同じように記述できます。
 sakura@hpmini:~$ cd
 sakura@hpmini:~$ ls -a src/ dst/
 dst/:
 .  ..  .conf  a.txt  b.txt
 
 src/:
 .  ..
 sakura@hpmini:~$ cp dst/* dst/.[^.]* src/
 sakura@hpmini:~$ ls -a src/ dst/
 dst/:
 .  ..  .conf  a.txt  b.txt
 
 src/:
 .  ..  .conf  a.txt  b.txt

* shopt組み込みコマンドで対応 [#d10fac0d]
cp, mvで*を指定すると隠しファイルはデフォルトでは対象になりません。~
しかし、以下のコマンドで隠しファイルも対象にすることができます。~
上記の手順をしてディレクトリおよびファイルがある場合はrmし、再度ファイルを作ってください。
 sakura@hpmini:~$ cd
 sakura@hpmini:~$ rm -fr src/ dst/
 sakura@hpmini:~$ mkdir src dst
 sakura@hpmini:~$ touch src/a.txt src/b.txt src/.conf
 sakura@hpmini:~$ ls -a src/ dst/
 dst/:
 .  ..
 
 src/:
 .  ..  .conf  a.txt  b.txt


ちなみにデフォルトだと以下のようになります。~
隠しファイルが対象になっていないことが確認できます。
 sakura@hpmini:~$ ls -a src/
 .  ..  .conf  a.txt  b.txt
 sakura@hpmini:~$ cp src/* dst/.
 sakura@hpmini:~$ ls -a src/ dst/
 dst/:
 .  ..  a.txt  b.txt
 
 src/:
 .  ..  .conf  a.txt  b.txt

** shopt -s dotglob [#bab8405f]
shoptのdotglobをonにすると、cp, mvで隠しファイルが対象となります。~
デフォルトではoffになっています。
 sakura@hpmini:~$ shopt | grep dotglob
 dotglob        	off
 sakura@hpmini:~$ 
以下のコマンドで、dotglobをonにすることができます。
 shopt -s dotglob
以下、実行例です。
 sakura@hpmini:~$ shopt -s dotglob
 sakura@hpmini:~$ shopt | grep dotglob
 dotglob        	on
隠しファイルもcpされているのが確認できます。
 sakura@hpmini:~$ ls -a src/ dst/
 dst/:
 .  ..
 
 src/:
 .  ..  .conf  a.txt  b.txt
 sakura@hpmini:~$ cp src/* dst/.
 sakura@hpmini:~$ ls -a dst/
 .  ..  .conf  a.txt  b.txt

したがって、shopt -s dotglob を.bashrcなどに記述しておけば毎回設定する必要がなくなります。~
ちなみに、offに戻したい場合は、以下のように -u オプションを使用します。
 shopt -u dotglob

&color(red){但し、注意点があります。};&br;
dotglobをonにすると隠しファイルがcp,mvの対象となります。~
また、&color(red){''rm''};も対象となるので、設定ファイルなども消えてしまうので注意してください。

以上、隠しファイルも含めcpやmvをする方法でした。

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS