使用 mv 命令移动随机文件

使用 mv 命令移动随机文件

简单而简短的问题;可以mv移动随机文件吗?

我知道mv可以使用 移动所有具有特定扩展名的文件mv *.extension,但由于我对 Ubuntu/Linux 还很陌生,所以我不确定是否mv可以这样做。

答案1

查看shufxargs命令的手册页,这可能就是您正在寻找的内容:

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))]是其中一个文件。

相关内容