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.