Если расположение обоих каталогов находится на одном диске / разделе, а папка b
изначально пуста, вы можете сделать следующее
$ rmdir /path/to/b
$ mv /other/path/to/a /path/to/b
$ mkdir /other/path/to/a
Если папка b
не пуста, то выможет сделать что-то вроде этого:
find /path/to/a/ -type f -exec mv -t /path/to/b {} +
Если вы просто хотите переместить 2000 файлов, вы можете сделать
find /path/to/a/ -type f -print | tail -2000 | xargs mv -t /path/to/b
Но это может быть проблематично с некоторыми именами файлов.Более чистый способ - использовать -print0
из find
, но проблема в том, что head
и tail
не могут их обработать, поэтому для этого нужно использовать awk
.
# first 2000 files (mimick head)
find /path/to/a -type f -print0 \
| awk 'BEGIN{RS=ORS="\0"}(NR<=2000)' \
| xargs -0 mv -t /path/to/b
# last 2000 files (mimick tail)
find /path/to/a -type f -print0 \
| awk 'BEGIN{RS=ORS="\0"}{a[NR%2000]=$0}END{for(i=1;i<=2000;++i) print a[i]}' \
| xargs -0 mv -t /path/to/b