Linux에서 파일과 디렉토리를 상위 폴더로 어떻게 이동합니까?


답변:


66
검색 . -maxdepth 1 -exec mv {} .. \;

숨겨진 파일도 이동합니다.

다음과 같은 메시지가 나타납니다.

mv :`. '를 움직일 수 없습니다 `../. ': 장치 또는 리소스 사용량이 많음

이동하려고 할 때 .(현재 디렉토리) 아무런 피해를주지 않습니다.


1
모든 하위 디렉토리의 모든 파일도 현재 디렉토리의 상위 디렉토리로 이동합니다. -maxdepth 1확실하게 사용하겠습니다 .
— ℝaphink

1
mv : cannot move ./scripts' to ../scripts ': 디렉토리가 비어 있지 않음

1
부모 디렉토리와 현재 디렉토리에 scripts라는 디렉토리가 있어야합니다. 이동하기 전에이 이름을 바꿔야합니다.
— ℝaphink

1
그것은 효과가 있었지만 매우 중요한 정보 중 하나를 남겼습니다. 하위 디렉토리에서이를 실행해야합니다. 또한 이것은 서브 디렉토리 자체를 삭제하지 않으므로 하나의 디렉토리를 백업하고 서브 디렉토리에서 rmdir을 수행해야합니다.
— crafter

89

나는이 주제를 처음 접했기 때문에 여기에왔다. 어떤 이유로 위의 방법으로 나를 속이지 않았습니다. 모든 파일을 디렉토리에서 상위 디렉토리로 옮기는 것은 다음과 같습니다.

cd to/the/dir
mv * ../

12
숨겨진 파일은 이동하지 않습니다
— Wavesailor

1 라이너(cd ${ANDROID_NDK_HOME}/android-ndk-r14b/ && mv * ../)
— DAWID 할 Drozd

10

쉘에 이것을 입력하십시오 :

mv *.* ..

모든 파일을 한 레벨 위로 이동합니다.

문자 *는 와일드 카드입니다. 따라서 *.deb모든 .deb 파일 Zeitgeist.*을 이동시키고 Zeitgeist.avi 및 Zeitgeist.srt를 하나의 폴더 위로 이동합니다 ... 물론 상위 디렉토리를 나타냅니다.

폴더 등을 포함하여 모든 것을 이동하려면 *대신*.*


3
이것은 dirs와 함께 작동하지 않았습니다! 또는 숨겨진 파일

그것은 적어도 나를 위해 dirs와 함께 작동합니다.
— maaartinus

5
디렉토리를 포함 *하지 않으려 고합니다*.*
— Chris S

멋진 다큐멘터리
— BlackBurn027

6

다음보다 더 간단 할 수는 없습니다.

mv * ../

숨겨진 파일을 이동하려면

mv /path/subfolder/{.,}* /path/ 

mv파일을 이동하는 명령이며 *모든 파일과 폴더를 의미 ../하며 상위 디렉토리의 경로입니다.


2

bash에서는 shopt -s dotglob 를 사용하여 모든 파일을 * 일치시키고 간단히

shopt -s dotglob; mv * ..

이 설정은 변경하기 전까지 쉘에 대해 영구적이기 때문에 최상의 해결책은 아닙니다.

shopt -u dotglob

그러나 나는 그것이 좋다고 생각합니다.


4
서브 쉘에서 호출하십시오 (shopt -s dotglob && mv * ..). 그런 식으로 옵션은 해당 서브 쉘에만 국한됩니다.
— Martin Ueding

좋은 대답-간단하고 숨겨진 파일을 포함하며 '.'복사에 대한 오류를 발생시키지 않습니다.
— Daniel Howard

1

오류가 발생하지 않고 매번 작동하는 방법 :

ls -1A . | while read -r file                                                    
do                                                                                  
    mv "./${file}" ..                                                            
done

1
find . -maxdepth 2 -type f -exec mv {} .. \;

위의 변형을 사용하여 모든 파일을 하위 폴더에서 상위 폴더로 옮겼습니다.

연도별로 폴더에 데이터가 있지만 메타 데이터를 사용하면 동일한 폴더에 모두 보관할 수있어 관리하기가 더 쉽습니다.

예.

/data/2001/file_1
/data/2002/file_2
/data/2003/file_3

0

모든 숨겨진 파일이 점으로 시작하고 그 뒤에 문자 또는 숫자가 있어야한다고 가정하면 사용할 수 있습니다

mv * .[A-Za-z0-9]* ..

그 .[A-Za-z0-9]*부분은 당신이 움직 .이거나 움직이려고하지 않도록 ..하는 것입니다.


0

Linux에서 모든 파일과 폴더를 상위 디렉토리로 이동하는 것은 간단합니다.

해당 폴더로 이동하여 다음 명령을 사용하십시오.

mv * /the full path

예를 들어 파일과 폴더가 다음과 같은 경우

/home/abcuser/test/1.txt 
                   2.txt
                   3.jpg
                   4.php
                   1folder
                   2folder

cd를 통해 해당 폴더로 이동하십시오.

cd /home/abcuser/test
mv * /home/abcuser

모든 파일과 폴더가 abcuser 폴더 (부모 디렉토리)로 이동합니다.


2
@Gareth에게 감사드립니다. Abhishek, 관련없는 링크를 게시하지 마십시오. 또한 형식을 확인하십시오. 또한 /the full pathLinux에서는 작동하지 않으므로로 공백을 이스케이프해야합니다 /the\ full\ path.
— slhck

0

디렉토리를 변경할 필요가 없습니다. 경로 끝에 *를 포함하십시오.

mv /my/folder/child/* /my/folder/

위는 숨겨지지 않은 파일 만 이동합니다. 숨겨진 파일 만 이동하려면. *를 사용하십시오.

mv /my/folder/child/.* /my/folder/

위의 두 명령을 하나의 명령으로 결합 할 수 있습니다.

mv /my/folder/child/{.,}* /my/folder/

참조 : 를 통해 상위 디렉토리에 숨겨진 파일을 포함한 모든 파일을 이동하는 방법 *


0
find -type f|while read line; do mv $line ${line##*/}; done

답변을 주셔서 감사합니다. 이 간단한 시나리오에서 작동 할 수 있지만, 배관 find으로하여 while read사용하는 나쁜 방법입니다 find, 그리고 더 나은 답변이 이미 게시되어있다.
— Scott

-1

하위 디렉토리로 전환하고 파일을 복사하거나 이동하려면 다음 명령을 실행하십시오.

예 : a는 상위 디렉토리이고 b는 하위 디렉토리입니다. 모든 파일을 b에서 a로 (하위 디렉토리에서 상위 디렉토리로) 이동 / 복사하려고합니다.

cd b
cp * ..
mv * ..

슈퍼 유저에 오신 것을 환영합니다! 이것은 다른 답변을 복제하고 새로운 내용을 추가하지 않습니다. 실제로 새로운 내용이 없다면 답변을 올리지 마십시오.
— DavidPostill
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.