그래서 삭제/이동/필터링이 필요한 파일이 있습니다.
디렉토리에 frames
이 패턴 filename 이 포함되어 있다고 가정하면 디렉토리의 모든 파일에는 이러한 패턴이 있습니다 timestamp_in_nanosecond.jpg
.
다음은 ls에서 파이프의 꼬리를 사용하는 파일의 예입니다. ls | tail
. (ls가 너무 느리기 때문에 tail을 사용합니다. 아마도 나열할 파일이 너무 많기 때문일 것입니다).
.../uwc/frames $ ls | tail
1660649146201561661.jpg
1660649146411875151.jpg
1660649146622526505.jpg
1660649146832063432.jpg
1660649147042957234.jpg
1660649147254488848.jpg
1660649147466753015.jpg
1660649147889093171.jpg
1660649148193314525.jpg
1660649148786199681.jpg
파일을 다른 디렉터리로 이동하려면 frames2
어떻게 해야 합니까 (예: 아래와 같이 범위 지정):
From 1660649147000000000.jpg
Until 1660649148000000000.jpg
따라서 frames2
dir에는 다음 파일만 포함됩니다.
1660649147042957234.jpg
1660649147254488848.jpg
1660649147466753015.jpg
1660649147889093171.jpg
답변1
와일드카드 사용
mv 1660649147?????????.jpg frames2/
캡을 포함할지 여부에 따라 캡도 포함할 수 있습니다.
mv 1660649148000000000.jpg frames2/
버퍼 공간이 부족하여 와일드카드를 일치시킬 파일이 너무 많으면 대신 다음을 사용하세요 find
.
find . -name 'frames2' -prune -o -name '1660649147?????????.jpg' -exec mv -t frames2/ {} +
노트
- 이
-name 'frames2' -prune
절은 하위 디렉터리find
로 내려가는 것을 방지합니다frames2
. 실제로 다른 곳에 있으면 필요하지 않습니다(또는-o
"또는") .frames2
mv
GNU 확장이 없는 경우 절을 로 변경하세요 . 단-t
, 완료하는 데 시간이 꽤 걸린다는 점에 유의하세요.-exec
-exec mv {} frames2/ \;
모든 경우에 실제로 파일을 이동하지 않고도 선택한 파일 세트를 볼 수 mv
있도록 수정할 수 있습니다 .echo mv