初歩的な質問で恐縮ですが、ご教示下さい。
cpコマンドのオプション「-r」を使用した再帰的なコピーですが、これまで「ディレクトリを丸っとコピーする」的なあいまいな解釈で使用してきました。
改めて「再帰的」に向き合ってみようと思いましたが、頭の中で整理することができません。
例えば、以下のようなディレクトリ構成の場合で、
Linux
1ls -R /home/hoge/ 2/home/hoge/: 3dir1 dir2 4 5/home/hoge/dir1: 6aaa.txt bbb.txt 7 8/home/hoge/dir2:
以下の再帰的コピーコマンドを実行します。
Linux
1cp -r /home/hoge/dir1/ /home/hoge/dir2/
すると以下のディレクトリ構造となります。
Linux
1ls -R /home/hoge/ 2/home/hoge/: 3dir1 dir2 4 5/home/hoge/dir1: 6aaa.txt bbb.txt 7 8/home/hoge/dir2: 9dir1 10 11/home/hoge/dir2/dir1: 12aaa.txt bbb.txt
これまでの「ディレクトリを丸っとコピーする」という解釈では上記の構造となるのは納得できるのですが、私の「再帰的」という動作の解釈は以下です。
まず、ディレクトリ内に存在するものに一つ一つに対して処理をする。
その際、その一つがディレクトリだったら、
そのディレクトリ内に存在するものに一つ一つに対して処理をする。
その際、その一つがディレクトリだったら...
上記の解釈だと、先程の再帰的コピーコマンドは以下の処理が実行されるのと同義ではないかと思いました。
Linux
1cp -r /home/hoge/dir1/ /home/hoge/dir2/ 2↓ 31. まず/home/hoge/dir1/ディレクトリ(のみ)を /home/hoge/dir2/にコピー 42. dir1ディレクトリ内のファイル aaa.txt に同様の処理、つまり cp /home/hoge/dir1/aaa.txt /home/hoge/dir2/ 53. dir1ディレクトリ内のファイル bbb.txt に同様の処理、つまり cp /home/hoge/dir1/bbb.txt /home/hoge/dir2/
しかし当たり前ですが上記1〜3の処理では再帰的コマンド実行時と同様の結果になりません。
(dir2ディレクトリ直下に 空のdir1ディレクトリ、aaa.txt、bbb.txt が存在する状態になる)
そもそも再帰的コマンドを分解して解釈しようとするのがご法度なのかもしれませんが、、、
すみません。「そういうものだよ」と納得するのが悔しく、ちゃんと「再帰的」と向き合いたいと思いご質問させていただきました。
以上、「再帰的」の捉え方について良い解釈がございましたらご教示いただけますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。