파일과 디렉터리가 포함된 폴더가 있는데 이 모든 파일과 디렉터리를 , 및 를 제외한 다른 A
폴더로 이동하고 싶습니다 .B
file
file2
directory
directory2
이것이 어떻게 달성될 수 있습니까?
답변1
그리고 zsh
:
setopt extendedglob # best in ~/.zshrc
mv A/^(file|directory)(|2)(D) B/
( (D)
포함하다가리키다(숨겨진) 파일).
그리고 bash
:
shopt -s extglob dotglob failglob
mv A/!(@(file|directory)?(2)) B/
그리고ksh93
(FIGNORE='@(.|..|@(file|directory)?(2))'; mv A/* B)
답변2
내가 평소에 하는 일
cd A
ls > a
("a" 파일이 없다고 가정).
vi a
보관하려는 파일이나 디렉터리를 삭제하세요.
mv $(<a) B
답변3
find
제외된 표현식과 함께 사용할 수 있습니다 .
find . ! -name . -prune ! -path ./file \
! -path ./file2 \
! -path ./directory \
! -path ./directory2 \
-exec mv {} your_destination \;
이 솔루션은 다음에서 영감을 얻었습니다.이 문제.
답변4
./A
및 가 ./B
동일한 파일 시스템에 있는 경우그리고해당 파일이 다음 위치에 아직 없는 경우 ./B
:
file file2 directory directory2
...이 작업은 원자적이어야 합니다.
cd ./A; mv * ../B
for mv in file file2 directory directory2
do mv ../B/"$mv" .
done
그렇지 않다면 다음이 있습니다.적어도위의 명령 세트를 사용하여 8개의 추가 장치 간 복사본을 완료합니다.