Простой и короткий вопрос; mv
я знаю, что mv
может перемещать все файлы с определенным расширением, используя mv *.extension
, но я довольно новичок в Ubuntu / Linux в целом. Я не уверен, может ли mv
сделать это или нет.
Смотрите на страницы справочника для shuf
и xargs
команды, это могло бы быть тем, что Вы ищете:
shuf -n [Number of files to move] -e [PATH to the files to be moved] | xargs -i mv {} [PATH to the dest]
Вот подход только для оболочки:
## 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))]
является одним из файлов.