"mv" 명령을 사용하여 파일을 잃어버렸는데 파일이 어디에 있는지 모르겠습니다!

"mv" 명령을 사용하여 파일을 잃어버렸는데 파일이 어디에 있는지 모르겠습니다!

이 명령을 사용하여 mv일부 파일을 잃어버렸습니다 . 나는 그들이 어디에 있는지 모른다. 복사하려는 디렉토리에 없습니다.

제가 작성한 기록은 다음과 같습니다.

samuelcayo@CAYS07019906:~/Downloads/221-tp2-public-main$ cd
samuelcayo@CAYS07019906:~$ ls
Desktop  Documents  Downloads  GameShell  Music  Pictures  pratice  Public  Templates  Videos
samuelcayo@CAYS07019906:~$ mkdir tp2
samuelcayo@CAYS07019906:~$ ls
Desktop  Documents  Downloads  GameShell  Music  Pictures  pratice  Public  Templates  tp2  Videos
samuelcayo@CAYS07019906:~$ cd Downloads/221-tp2-public-main/
samuelcayo@CAYS07019906:~/Downloads/221-tp2-public-main$ ls
backup  copybash  Dockerfile               ntfy-1.16.0  packets.txt     README.md      restore        secret
cloud   data      Dockerfile_CAYS07019906  ntfy.zip     rapport-tp2.md  remplacer.sed  sauvegarde.sh  tail
samuelcayo@CAYS07019906:~/Downloads/221-tp2-public-main$ mv rapport-tp2.md tp2
samuelcayo@CAYS07019906:~/Downloads/221-tp2-public-main$ mv Dockerfile_CAYS07019906 tp2
samuelcayo@CAYS07019906:~/Downloads/221-tp2-public-main$ mv packets.txt tp2
samuelcayo@CAYS07019906:~/Downloads/221-tp2-public-main$ mv sauvegarde.sh tp2
samuelcayo@CAYS07019906:~/Downloads/221-tp2-public-main$ cd
samuelcayo@CAYS07019906:~$ cd tp2/
samuelcayo@CAYS07019906:~/tp2$ ls
samuelcayo@CAYS07019906:~/tp2$ ls -l
total 0
samuelcayo@CAYS07019906:~/tp2$ cd ..

답변1

홈 디렉터리에 라는 디렉터리를 만듭니다 tp2. 즉, 디렉터리를 만듭니다 ~/tp2. 그런 다음 으로 변경 ~/Downloads/221-tp2-public-main하고 사용을 시작합니다 mv.

mv각 작업의 대상을 로 지정 tp2하고 tp2현재 디렉터리의 디렉터리가 아니므로 이동하는 모든 파일은이름 바꾸기 tp2. 이후에 실행할 때마다 tp2이전에 호출한 file 을 덮어씁니다 mv. 결국 tp2남은 것은 이전에 호출된 것입니다 sauvegarde.sh.

~/tp2/이를 모든 작업의 ​​대상으로 사용하면 데이터 손실을 방지할 수 있습니다 mv.

디렉터리를 ~생성한 홈 디렉터리를 나타냅니다 . tp2대상 경로의 끝에서는 /반드시 필요한 것은 아니지만 mv디렉토리가 아닌 경우 정상적으로 실패합니다.~/tp2

손실된 파일을 복구하기 위해 지금 할 수 있는 작업에 관해서는, 다른 곳에 복사본이 없다면 최근 백업에서 복원하는 것을 고려해 보세요.

답변2

mv이 명령 (Ubuntu에 있음) 의 GNU 구현에는 해당 디렉터리가 기존 디렉터리인지 mv -t myDir확인하는 명시적 옵션이 있습니다. myDir이렇게 하면 mv Source Dest(이동하다) 그리고 mv Source Directory(이사 오다).

또한 args가 기본적으로 추가되는 xargs와 같은 구문에서 args의 순서를 수정합니다 find ... -print0 | xargs -r0 mv -t Dir --(따라서 대상 디렉터리를 마지막에 배치할 수 없습니다). 두 경우 모두 문제를 피할 수 있습니다.

mv -i옵션은 또한 실수로 파일을 덮어쓰는 것을 방지합니다.

답변3

대화형으로 이 작업을 수행하지 마세요.

mv file1 dest
mv file2 dest
mv file3 dest

최소한 첫 번째 명령의 결과를 확인하지 않고 다음과 같은 여러 명령을 실행하지 마십시오.

mv file1 dest
ls -l dest # is there a dest, containing file1?

대신 다음과 같이 하나로 결합하세요.

mv file1 file2 file3 ... dest

파일이 2개 이상일 경우 반드시 dest존재해야 하는 디렉터리로 해석됩니다. 존재하지 않거나 디렉터리가 아니면 mv실패합니다.

mv: target 'dfsafsdfdf' is not a directory

결과를 확인하지 않고 여러 명령을 실행하면 해당 명령이 제공하는 보호 기능을 상실할 수 있습니다.

mv-i기존 대상이 손상되지 않도록 하는 POSIX_standard 옵션이 있습니다 . mv별칭을 만들어 대화형 명령에 포함 할 수 있습니다 .

alias mv='mv -i'

관련 정보