하나를 제외한 모든 파일을 어떻게 이동합니까? 나는 다음과 같은 것을 찾고있다 :
'mv ~/Linux/Old/!Tux.png ~/Linux/New/'여기서 오래된 물건을 새 물건 폴더로 옮깁니다 Tux.png. ! -sign은 부정을 나타냅니다. 작업을위한 도구가 있습니까?
답변
bash를 사용하고 extglob쉘 옵션을 설정 한 경우 (보통)
mv ~/Linux/Old/!(Tux.png) ~/Linux/New/답변
.bashrc에 다음을 넣으십시오.
shopt -s extglob정규식을 확장합니다. 그런 다음 하나를 제외한 모든 파일을
mv !(fileOne) ~/path/newFolder다른 명령과 관련된 예외
디렉토리를 복사 할 때 스레드에서 알 수 있듯이 이름에 순방향 플래시를 사용할 수 없습니다. 조건을 제외하고 왜 extglob을 제외해야합니까? :
cp -r !(Backups.backupdb) /home/masi/Documents/Backups.backupdb/부정하기 전에 여기가 잘못 되었으므로 잘못 사용하면 다른 명령과 다른 예외가 발생할 수 있으므로 디렉토리를 이동하는 데 사용하지 않습니다.
답변
나는 전통적인 find & xargs 방식으로 갈 것입니다 :
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png -print0 |
    xargs -0 mv -t ~/Linux/New-maxdepth 1재귀 적으로 검색하지 않습니다. 파일 만 신경 쓰면 말할 수 있습니다 -type f. 경로 자체를 결과에 -mindepth 1포함시키지 않습니다 ~/Linux/Old. 포함 된 줄 바꿈이 포함 된 파일 이름을 포함하여 모든 파일 이름에서 작동합니다.
한 의견에 따르면 mv -t옵션은 아마도 GNU 확장 일 것입니다. 없는 시스템
find ~/Linux/Old -maxdepth 1 -mindepth 1 -not -name Tux.png \
    -exec mv '{}' ~/Linux/New \;답변
빠른 명령은 이동 명령이 일치하지 않도록 tux 파일 이름을 수정하는 것입니다.
예를 들면 다음과 같습니다.
mv Tux.png .Tux.png
mv * ~/somefolder
mv .Tux.png Tux.png답변
가장 쉬운 방법은 백틱을 사용하는 것입니다.
mv `ls -1 ~/Linux/Old/ | grep -v Tux.png` ~/Linux/New/편집하다:
별명으로 백 슬래시를 사용하지 말고, 대신 ls는 ls –color로 별명을 지정하십시오.
mv `\ls -1 ~/Linux/Old/ | grep -v Tux.png` ~/Linux/New/감사합니다 @Arnold Roa
