* 경유로 숨김 파일을 포함한 모든 파일을 부모 디렉토리로 이동하는 방법
인기 있는 질문일 텐데 답을 찾을 수가 없었어요.
숨김 파일을 포함한 * 경유로 모든 파일을 부모 디렉토리로 이동하는 방법:
mv /path/subfolder/* /path/
이렇게 하면 모든 파일이 예상대로 상위 디렉토리로 이동되지만 숨겨진 파일은 이동되지 않습니다.어떻게 하는 거야?
이에 대한 포괄적인 솔루션 세트는 UNIX & Linux의 "How do you move all files (hidden을 포함한)"라는 답변에서 찾을 수 있습니다.Bash, zsh, ksh93, standard (POSIX) sh 등으로 솔루션을 표시합니다.
다음 두 명령을 함께 사용할 수 있습니다.
mv /path/subfolder/* /path/ # your current approach
mv /path/subfolder/.* /path/ # this one for hidden files
mv /path/subfolder/{.,}* /path/
그 결과, 다음과 같이 확장됩니다.
mv /path/subfolder/* /path/subfolder/.* /path/
(필수:echo a{.,}b
까지 확장하다.a.b ab
)
여기에는 몇 가지 경고가 표시됩니다.
mv: cannot move ‘/path/subfolder/.’ to /path/.’: Device or resource busy
mv: cannot remove /path/subfolder/..’: Is a directory
그냥 무시해 주세요.이렇게 되는 이유는/path/subfolder/{.,}*
로도 확장된다./path/subfolder/.
그리고./path/subfolder/..
디렉토리 및 부모 디렉토리입니다(폴더에 있는 경우의 「」및 「..」를 참조해 주세요).
카피만 하고 싶은 경우는, 다음의 조작만을 사용할 수 있습니다.
cp -r /path/subfolder/. /path/
# ^
# note the dot!
이렇게 하면 일반 파일과 숨김 파일을 모두 복사할 수 있습니다./path/subfolder/.
「이 디렉토리의 모든 것」으로 전개합니다.(출처:숨김 파일, 숨김 디렉토리 및 그 내용을 포함하기 위해 cp를 사용하여 복사하려면 어떻게 해야 합니까?
이게 제일 우아한 것 같아요.움직이지도 않고..
:
mv /source/path/{.[!.],}* /destination/path
이렇게 하면 모든 파일이 예상대로 상위 디렉토리로 이동되지만 숨겨진 파일은 이동되지 않습니다.어떻게 하는 거야?
켜도 돼dotglob
:
shopt -s dotglob # This would cause mv below to match hidden files
mv /path/subfolder/* /path/
끄려면dotglob
다음과 같이 말할 필요가 있습니다.
shopt -u dotglob
를 사용하여find
명령과 함께 명령하다mv
명령어를 사용하면,mv
디렉토리 이동 시도로부터의 명령어(예:..
그리고..
및 서브디렉토리.한 가지 옵션이 있습니다.
find /path/subfolder -maxdepth 1 -type f -name '*' -exec mv -n {} /path \;
제공된 다른 답변 중 일부에 문제가 있습니다.예를 들어, 다음 각 항목은 원본 경로에서 하위 디렉터리를 이동하려고 시도합니다.
1) mv /path/subfolder/* /path/ ; mv /path/subfolder/.* /path/
2) mv /path/subfolder/{.,}* /path/
3) mv /source/path/{.[!.],}* /destination/path
또한 2)는 및 을 포함합니다.files and 3) 다음과 같은 파일이 누락됩니다.푸바, ...바푸 등
사용할 수 있습니다.mv /source/path/{.[!.],..?,}* /destination/path
3이 놓친 파일을 포함하지만 하위 디렉토리의 이동을 시도합니다.사용방법find
을 지휘하다mv
위에서 설명한 명령어를 사용하면 이러한 문제가 모두 해소됩니다.
보다 간단한 대체 솔루션은rsync
유틸리티:
sudo rsync -vuar --delete-after --dry-run path/subfolder/ path/
주의: 위의 명령어는 변경 내용을 표시합니다.실제 변경을 실행하려면 를 삭제합니다.
은 원래 폴더 「 」 「 」 「 」 )를 할 수 것입니다.subfolder
와 함께 되며, 를 사용할 때는 됩니다.mv
이 예에서는 폴더를 정리해야 합니다.숨겨진 파일과 숨기지 않은 파일을 하나의 패턴으로 처리하는 데 문제가 되는 것은 말할 것도 없습니다.
.rsync
는, 을 서포트하고 .이것에 , 됩니다( 「복사」, 「복사」, 「복사」, 「복사」, 「복사」( ).-a
를 참조해 주세요.
한 「」-u
파일인 "새로운 파일"을 .-r
및 디렉토리로 되돌아가다-v
이치노
제 친구 "닷글로브"를 소개합니다."*"에 숨겨진 파일이 포함되어 있는지 여부에 관계없이 켜지거나 꺼집니다.
$ mkdir test
$ cd test
$ touch a b c .hidden .hi .den
$ ls -a
. .. .den .hi .hidden a b c
$ shopt -u dotglob
$ ls *
a b c
$ for i in * ; do echo I found: $i ; done
I found: a
I found: b
I found: c
$ shopt -s dotglob
$ ls *
.den .hi .hidden a b c
$ for i in * ; do echo I found: $i ; done
I found: .den
I found: .hi
I found: .hidden
I found: a
I found: b
I found: c
기본값은 "off"입니다.
$ shopt dotglob
dotglob off
작업을 마치면 다시 켜는 것이 가장 좋습니다. 그렇지 않으면 꺼진 것으로 추정되는 것들이 혼란스러워질 수 있습니다.
모든 파일을 복사해야 할 때 이 문제를 해결하는 방법(다음 포함).
files)는 다음과 같은 권한을 보유한 대상 디렉토리에 대해 다음과 같이 처리됩니다. (이미 존재하는 경우 제외됩니다.
yes | cp -rvp /source/directory /destination/directory/
yes
는, 파일을 자동적으로 하기 위한 입니다.r
"재귀",v
, 상술p
한을보보보보
소스 패스가 로 끝나지 않는 것에 주의해 주세요(따라서 모든 파일/디렉토리와 .파일이 복사됩니다).
소스 폴더의 내용을 전체적으로 대상에 배치하기 때문에 대상 디렉토리는 로 끝납니다.
그냥 해
for I in $(ls -A dir)
do
mv dir/$I newDir
done
서브폴더 실행 중임을 전제로 합니다.find . -maxdepth 1 -exec mv {} .. \;
언급URL : https://stackoverflow.com/questions/20192070/how-to-move-all-files-including-hidden-files-into-parent-directory-via
'programing' 카테고리의 다른 글
WPF Value Converter - 변환할 수 없는 값의 표준 반환 (0) | 2023.04.16 |
---|---|
SQL에서 랜덤 행을 요청하는 방법 (0) | 2023.04.16 |
목표 C의 상수 (0) | 2023.04.16 |
파이프와 함께 "tee"를 사용하는 동안 파일에 표준 오류를 쓰는 방법은 무엇입니까? (0) | 2023.04.16 |
여러 열에 그룹 기준 사용 (0) | 2023.04.16 |