Переместить только последние 8 файлов в каталог в другой каталог

Я не могу предоставить необходимый материал для чтения, но позвольте мне рассказать вам, что большинство пользователей Ubuntu соглашаются повсеместно:

Это безопасно. Группа безопасности Communications-Electronics правительства Соединенного Королевства проверила множество ОС, и Ubuntu получила наивысшую оценку среди них. В Linux очень мало вирусов, и последние выпуски Ubuntu уже имеют эти исправления, поэтому вы никогда не найдете антивирус, выпущенный для Linux-проблем, большинство из которых доступны для Linux, предназначены для предотвращения передачи вирусов Windows. [ ! d1]

Это безопасно. Очень стабильно. Шансы на сбой ПК Ubuntu часто меньше, чем на ПК с ОС Windows.

Лучшие IT-и другие-cos полагаются на Ubuntu. Google, Facebook, Yahoo, Heroku, Amazon .... так много ваших любимых и необходимых веб-сайтов работает на сервере Ubuntu. Sony использует ПК Ubuntu для компиляции прошивки для каждого смартфона Xperia. Студии, такие как Pixar и Weta Digital, и фильмы, такие как James Cameron, использовали серверные фермы, работающие под управлением Ubuntu, для генерации своих фильмов.

Топ-IT и другие люди полагаются на Ubuntu. Правительства и организации с высоким уровнем риска используют Linux и Ubuntu для хранения и обработки данных, поскольку безопасная работа - непростая задача.

Порты не увеличивают ваш риск. Все версии портов Ubuntu - Edubuntu, Kubuntu, Lubuntu и т. Д. Основаны на версии Ubuntu. Если есть проблемы, то он универсален для каждого порта Ubuntu и основной базовой ОС, а не только для определенного порта.

Остановите беспокойство. Вы лучше с Ubuntu, чем с Windows.

1
задан 15 November 2016 в 23:39

2 ответа

Вы можете делать такие вещи, используя команду substitution. В Bash:

mv $(ls -d [sort options] source/* | tail -n8) destination

$(command) будет запускать все, что заключено в нем, и подставлять вывод текста во внешнюю команду. Эта команда ls будет печатать путь к каждому файлу в исходном каталоге, отсортированном по указанным вами флагам, по одному на строку, поэтому tail может просто взять последние несколько. Таким образом, вышеупомянутое расширилось бы до

mv source/file1 source/file2 source/file3 ... source/file8 destination

Вы можете просто запустить ls -d [sort options] source/* | tail -n8, чтобы посмотреть, какие файлы он будет копировать.

В зависимости от того, как вы заказываете вывод ls и имя файла, вы можете сделать то, что ищете более просто, просто используя какой-либо вариант mv source/name_* destination, чтобы скопировать все, начиная с «name_» в целевой каталог.

EDIT: Вышеупомянутые разрывы, когда в именах файлов есть пробелы. Более сложной альтернативой, которая обращается к этому, будет

ls -d1 [sort options] source/* | tail -n8 | tr '\n' '\0' | xargs --null mv -t destination

, хотя он все еще использует вывод синтаксического анализа ls для сортировки в любом порядке, который не является алфавитным.

3
ответ дан 23 May 2018 в 04:10

, похожее на предложение t-mager, вы можете использовать опции сортировки ls и захватить последние 8 файлов в список, и это ваши файлы:

1 10 2 3 4 5 6 7 8 9

использовать следующая команда: for n in `ls|tail -8`; do mv $n ~/temp; done

1
ответ дан 23 May 2018 в 04:10
  • 1
  • 2
    @ Занна, почему бы и нет? помимо исходной проблемы обратного хода, эта команда просто перемещает последние 8 файлов из одной директории в другую и ее легко понять. – xortion 21 November 2016 в 21:40
  • 3
    Он будет разбит, если в именах файлов есть пробелы, символы новой строки и т. Д. См. Ссылку, почему я потратил столько усилий на свой собственный ответ, когда синтаксический анализ ls стал намного более очевидным ... – Zanna 21 November 2016 в 21:47

Другие вопросы по тегам:

Похожие вопросы: