아래와 같은 상황에서 해당 경로에 있는 모든 파일을 directory1로 옮기고 싶으면 어떻게 해야 할까.
[user1@localhost folder]$ ll
total 0
-rw-rw-r--. 1 user1 user1 0 Jan 16 23:34 another_file1
-rw-rw-r--. 1 user1 user1 0 Jan 16 23:34 another_file2
-rw-rw-r--. 1 user1 user1 0 Jan 16 23:34 another_file3
-rw-rw-r--. 1 user1 user1 0 Jan 16 23:34 another_file4
-rw-rw-r--. 1 user1 user1 0 Jan 16 23:34 another_file5
drwxrwxr-x. 2 user1 user1 6 Jan 16 23:59 directory1
drwxrwxr-x. 2 user1 user1 6 Jan 16 23:39 directory2
drwxrwxr-x. 2 user1 user1 6 Jan 16 23:39 directory3
drwxrwxr-x. 2 user1 user1 6 Jan 16 23:39 directory4
-rw-rw-r--. 1 user1 user1 0 Jan 16 23:34 file1
-rw-rw-r--. 1 user1 user1 0 Jan 16 23:34 file2
-rw-rw-r--. 1 user1 user1 0 Jan 16 23:34 file3
-rw-rw-r--. 1 user1 user1 0 Jan 16 23:34 file4
-rw-rw-r--. 1 user1 user1 0 Jan 16 23:34 file5
파일 이동은 mv를 사용하면 되는데 잠시 고민이 될 수 있다. 옮길 경로인 directory1이 같은 경로에 있기 때문이다.
그래서
mv file* another* directory1
이런식으로 패턴을 이용해서 넣어야하나… 이렇게하면 directory2, directory3, directory4 같은 건 어떻게 옮기나 이런 생각이 들 수도 있는데
그냥 단순하게 directory1을 포함한 모든 파일을 directory1로 옮기면 된다.
[user1@localhost folder]$ mv * directory1
mv: cannot move ‘directory1’ to a subdirectory of itself, ‘directory1/directory1’
그럼 이렇게 directory1을 directory1로 옮길 수는 없다는 에러를 뱉기 때문에 역시 문제가 있는 건가 싶지만 별 문제는 없다.
말그대로 모든 파일을 옮기는 중 directory1도 옮기려는 시도가 있었기 때문에 에러를 출력하는 것인데 그 뿐이다.
[user1@localhost folder]$ ls
directory1
[user1@localhost folder]$ cd directory1/
[user1@localhost directory1]$ ls
another_file1 another_file3 another_file5 directory3 file1 file3 file5
another_file2 another_file4 directory2 directory4 file2 file4
결론적으로는 원하는 대로 파일이 모두 옮겨진다.