隠しファイルも含めcp,mvする方法 †ドット(.)からはじまる隠しファイルも含めてコピーするとき、cp * や mv * では、 テスト環境 †以下のコマンドでディレクトリおよびファイルを作成します。 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する方法(正規表現を使う) †以下の例では、*にてファイルをすべて(隠しファイルを除く)と隠しファイルを指定し、srcからdstにmvしてみます。 $ 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組み込みコマンドで対応 †cp, mvで*を指定すると隠しファイルはデフォルトでは対象になりません。 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 †shoptのdotglobをonにすると、cp, mvで隠しファイルが対象となります。 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などに記述しておけば毎回設定する必要がなくなります。 shopt -u dotglob 但し、注意点があります。 以上、隠しファイルも含めcpやmvをする方法でした。 |