Answers:
mv `ls | head -500` ./subfolder1/
-
或开头,.
并假设subfolder1
其自身未出现在该列表中。)
$ sudo mv `ls | head -50000` 01/ sudo: unable to execute /bin/mv: Argument list too long
与zsh
:
mv -- *(D.oN[1,5000]) ./subfolder1
要按照目录中的顺序移动多达5000个常规文件。
对于按字典顺序排序的列表中的前5000个:
mv -- *(D.[1,5000]) ./subfolder1
如果您收到有关arg list的错误,则时间过长。您可以通过发出以下命令来使用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/
一个简单的版本,支持特殊的字符,空格等。
ls -Q dir1 | head -1000 | xargs -i mv dir1/{} dir2/
对于这个工作的,是dir2
必须存在,你必须从父目录执行它dir1
和dir2
。
这会将1000个文件从dir1移到dir2。
ls -Q -S dir1 | head -1000 | xargs -i mv dir1/{} dir2/
用于在dir1中移动1000个最大文件(-S按大小列出文件)
ls -Q
不会产生与xargs
预期输入格式兼容的输出。它有助于包含空格字符的文件名,但对于双引号或反斜杠不起作用,对于包含控制字符(包括TAB)的文件名有害。
您可能需要执行以下操作:
x=1
for file in *
do
if [ "X$x" = "X#####" ]; then
break
fi
mv $file <destination>
x=`expr $x + 1`
done
该脚本可用于bash,ksh,sh和多个UNIX变体。
destination
并且文件名不显示在该列表中。)