简单而简短的问题;可以mv
移动随机文件吗?
我知道mv
可以使用 移动所有具有特定扩展名的文件mv *.extension
,但由于我对 Ubuntu/Linux 还很陌生,所以我不确定是否mv
可以这样做。
答案1
查看shuf
和xargs
命令的手册页,这可能就是您正在寻找的内容:
shuf -n [Number of files to move] -e [PATH to the files to be moved] | xargs -i mv {} [PATH to the dest]
答案2
这是一个仅限 shell 的方法:
## Save all files in the array $files
files=(*)
## Get a random number between 0 (arrays start counting at 0) and the
## the number of files -1 (the last file in the array)
rand=-1
until (( $rand < ${#files[@]} && $rand >= 0 )); do rand=$RANDOM; done
## Move the file, renaming as necessary
mv "${files[$rand]}" newfilename
您可以将以上内容直接复制/粘贴到您的终端中。
或者,在 Perl 中:
perl -le 'rename $ARGV[int(rand($#ARGV))],newfilename' *
该rename
函数只是将其第一个参数重命名为第二个参数:rename orifinal_file new_file
。该rand
函数打印 0 到给定参数之间的随机小数。$#ARGV
是给脚本的参数数量,这里是当前目录中的所有文件(和子目录)。由于rand
返回小数,我们将其传递给它int()
以获取整数。因此,int(rand($#ARGV))
随机选择 @ARGS 数组中的一个索引,因此$ARGV[int(rand($#ARGV))]
是其中一个文件。