綾小路龍之介の素人思考

[yes] 同名のファイルを移動せずに、複数のディレクトリを1つのディレクトリにまとめる

複数の場所にあるファイルを1つのディレクトリに移動したいが、複数の移動元に同じファイル名のファイルが含まれていることがある。同じファイル際に、こういう用途には、rsyncを用いるのが常套手段だけれども、

テストディレクトリの作成。src0とsrc1の中身をdstに移動することを考える。

$ mkdir src0
$ touch src0/test0.txt
$ touch src0/test1.txt
$ touch src0/test2.txt
$ mkdir src1
$ touch src1/test0.txt
$ touch src1/test1.txt
$ mkdir dst

移動元の優先順位として、高い順にsrc0、src1とすれば、以下のようにする。-iをつけることで、既にdstディレクトリに同じファイル名のファイルがある場合は上書きの確認がなされる。

$ mv -i src0/* src1/* dst/
mv: overwrite `dst/test0.txt'? n
mv: overwrite `dst/test1.txt'? n

ファイル数が多い場合は、いちいち答えるのが面倒になる。このような場合はyesコマンドに'n'を付けて使う。

$ yes 'n' | mv -i src0/* src1/* dst/
mv: cannot stat `src0/*': No such file or directory
mv: overwrite `dst/test0.txt'? 
mv: overwrite `dst/test1.txt'? 

リファレンス

  1. Man page of yes

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2010-04-18T15:34:59+09:00
  2. Modified: 2010-04-18T15:34:59+09:00
  3. Generated: 2017-03-14T23:09:16+09:00