"mv * .*" 다음에 파일을 어떻게 다시 가져오나요?

"mv * .*" 다음에 파일을 어떻게 다시 가져오나요?

다음 명령을 사용하여 일부 파일을 숨겼습니다.

mv * .*

하지만 지금은 찾을 수 없습니다. 나는 다음을 사용해 보았습니다.

mv .* *

하지만 아무 일도 일어나지 않았습니다(오류가 표시되었습니다). 내가 실행하면 :

ls -la

그것은 보여지고 있습니다:

total 8  
drwxrwxr-x 2 abhishek abhishek 4096 Mar  9 20:46 .  
drwxrwxr-x 4 abhishek abhishek 4096 Mar  9 20:46 ..  

숨겨진 파일을 복구할 수 있는 방법이 있나요?

답변1

파일은 숨겨져 있지 않습니다. 모든 파일(및 디렉터리가 있는 경우)을 한 디렉터리 위로 이동했습니다.

mv * .*생각한 대로 작동하지 않기 때문에 이런 일이 발생합니다 . 이 명령은 mv하나의 파일을 하나의 파일로 이동하거나(이름 바꾸기) 하나 또는 여러 파일을 디렉토리로 이동합니다. 일부 스마트 이름 변경을 통해 여러 파일을 여러 파일로 이동하지 않습니다.


무슨 일이에요?

디렉터리에 하나의 디렉터리와 3개의 파일이 있다고 가정해 보겠습니다.

dir1
file1
file2
file3

일부 셸(예: bash, dash, ...)은 명령을 다음으로 확장합니다.

mv dir1 file1 file2 file3 . ..

확장된 명령은 다음에서 찾을 수 있는 SYNOPSIS의 두 번째 형식에 적합합니다 man mv.

mv [OPTION]... SOURCE... DIRECTORY

.및 다음을 참고하세요 ...

  • .현재 디렉토리이고,
  • ..한 디렉토리 위에 있습니다.

이 명령은 다음을 의미합니다. , dir1및 및 을 (를) 이동합니다 . 또한 본질적으로 다음과 같은 오류가 발생합니다.file1file2file3...

mv: cannot move '.' to '../.'

그러나 해당 디렉토리에 대한 쓰기 권한이 있으면 다른 모든 파일은 이동되었습니다. ..(= 한 디렉터리 위) 에서 파일을 찾을 수 있습니다 . 그러나 동일한 이름의 파일을 덮어쓰게 되므로 이전에 어떤 파일이 어떤 디렉터리에 있었는지 알 수 없습니다.


하위 디렉토리가 있다면 다음 .hidden-dir으로 확장되었을 것입니다.

mv dir1 file1 file2 file3 . .. .hidden-dir

그러면 모든 파일이 .hidden-dir. 그러나 이는 귀하의 출력 .hidden-dir에서 ​​볼 수 있기 때문에 귀하에게는 해당되지 않는 것 같습니다 ls -la.


어떻게 고치는 지

달리다:

mv ../dir1 ../file1 ../file2 ../file3 .

그러나 이름을 알아야 합니다.


무엇을 사용했어야 했는지

mmv '*' '.#1'

또는

rename 's/^/./' *

관련 정보