В Солярисе (> = 10) команда ls имеет-E опцию. Таким образом, Ваша команда могла быть столь же простой как ls -E /etc/hosts
или ls -E /etc/hosts | awk '{print $6}'| sed 's#-##g'
получить желаемый результат.
С zsh
:
mv -- *(D.oN[1,5000]) ./subfolder1
Для перемещения до 5 000 регулярных файлов в порядок, они находятся в каталоге.
Для первых 5000 в лексикографически отсортированном списке:
mv -- *(D.[1,5000]) ./subfolder1
Если Вы получаете ошибку о списке аргумента слишком долго. Можно использовать zsh
buitin mv
команда путем издания:
zmodload zsh/files
сначала.
POSIXly:
set --
for f in .* *; do
[ "$#" -lt 5000 ] || break
[ -f "$f" ] || continue
[ -L "$f" ] && continue
set -- "$@" "$f"
done
mv -- "$@" subfolder1/
Вы, возможно, должны были бы сделать что-то вроде этого:
x=1
for file in *
do
if [ "X$x" = "X#####" ]; then
break
fi
mv $file <destination>
x=`expr $x + 1`
done
Этот сценарий работает в ударе, ksh, sh и нескольких вариантах UNIX.
destination
самостоятельно не обнаруживается в том списке.) Верный
– Stéphane Chazelas
13.12.2013, 19:25
Una versión que es simple y admite caracteres especiales, espacios, etc.
ls -Q dir1 | head -1000 | xargs -i mv dir1/{} dir2/
Para que esto funcione como -es dir2
debe existir y debe ejecutarlo desde el directorio principal de dir1
y dir2
.
Esto moverá 1000 archivos de dir1 a dir2.
запуск ниже команды
find. -name 'Hello*.gz' | head -n 5000 | xargs -I {} mv {} /data01/path/
В команде find
.
(точка )обозначает текущий каталог
находит файлы, которые начинаются с Hello и заканчиваются на gz, первые 5000 файлов будут перемещены по пути/data01/path/
Мне удалось успешно выполнить перемещение на 50 000 без такой ошибки mv bash
ls | head -50000 | xargs -I{} sudo mv {} 01/
Забавно, это было на общем ресурсе samba, поэтому ограничение в 50 КБ связано с тем, что графический интерфейс Windows Explorer не любит более 60 КБ файлов в каталоге.
Версия работает даже в очень больших каталогах :перемещение тысячи файлов из каталога, содержащего полмиллиона:
ls -U. | head -1000 | xargs mv -t 01/
(Обратите внимание, что синтаксис с {} создает новый mv для каждого файла, а этот — нет)
-
или.
и принятиеsubfolder1
самостоятельно не обнаруживается в том списке.) – Stéphane Chazelas 13.12.2013, 19:05