Я использовал команду даты и формат времени, перечисленные ниже, чтобы успешно установить дату из команды оболочки терминала, выполненной на Android Things, которая использует ядро Linux.
дата 092615002017.00
ММДДЧЧММГГГГ.СС
ММ -Месяц -09
ДД -День -26
ЧЧ -Час -15
ММ -Мин. -00
ГГГГ -Год -2017
.SS -секунда -00
Эта команда должна делать то, что вы ожидаете:
find "/media/sergio/Seagate Expansion Drive/DOWNS/Spring Framework 5" -type f \! -iname '*.mp4' -execdir mkdir -p rest \; -execdir mv "{}" rest/ \;
В этой команде:
-type f
:сопоставлять только файлы (избегать перемещения каталогов, символических ссылок или специальных файлов)
\!
:действовать как логическое «НЕ»
-iname
:выберите файлы, совпадающие по имени, без учета регистра (Используйте -name
, если вы хотите, чтобы они соответствовали регистру)
-execdir
:запускает команду из подкаталога, содержащего соответствующий файл. Их нам нужно две, одна для создания папки rest/
, а вторая для перемещения в нее файла.
отредактировать :добавить отсутствующий интерлиньяж \;
, использовать execdir
и оставить только одно решение.
Я не вижу смысла использовать здесь find
. Вы точно знаете, где что находится, поэтому нет необходимости искать файлы.
Вместо этого, если вы используете оболочку bash
,
#!/bin/bash
shopt -s extglob dotglob
for dirpath in '/media/home/Seagate Expansion Drive/Downloads/Java Spring Gurus'/folder*/
do
mkdir -p "$dirpath"/rest &&
mv -i "$dirpath"/!(*.mp4|rest) "$dirpath"/rest
done
Это зациклит все ваши folder*
каталоги. Для каждого такого каталога он будет создавать в нем подкаталог rest
, а затем перемещать в него все, что не соответствует*.mp4
(или самому каталогу rest
).
Расширенный шаблон подстановки !(*.mp4|rest)
будет соответствовать любому имени, не оканчивающемуся на .mp4
, и не rest
.
Параметры оболочки extglob
позволяют использовать расширенные шаблоны подстановок в bash
, а опция оболочки dotglob
позволяет подстановкам сопоставлять скрытые имена.