Как изменить дату создания / изменения всех папок на USB-накопителе с помощью сенсорной команды?
У меня есть USB-диск с музыкой в формате mp3, который я играю в своей машине. У моей машины есть порт USB. Проблема в том, что машина сортирует музыку по дате создания / модификации (а не по алфавиту). Это больно найти того художника, которого я ищу.
Чтобы решить эту проблему, мне нужен способ "обновлять" дату создания / изменения для всех папок на USB-накопителе каждый раз, когда я добавляю новую папку с музыкой на USB-накопитель. Кто-нибудь знает, как я могу это сделать?
Команда Touch работает отлично, но формат touch <filename>
потребуется навсегда, чтобы сделать на каждой папке на диске. В любом случае, чтобы выбрать все папки на диске, а затем touch <all folders>
?
На моем USB-накопителе у меня есть папка для каждого альбома и песни в каждой соответствующей папке, например: Album-1-folder Album-2-folder
Мне нужно применить команду Touch к каждой из папок "альбома" на диске.
Я наткнулся на простое решение для решения этой проблемы:touch /media/USB_Drive/*
3 ответа
Если у вас есть много файлов, чтобы потрогать, это займет некоторое время. Вы можете подключить диск и в терминале, если ваш диск смонтирован как /media/USB_DISK
, сделайте следующее:
for i in `find /media/USB_DISK -type d|sed -e 's/ /%20/g'|sort`; do
echo $i|sed -e 's/%20/\\ /g'|xargs touch
done
Просто замените USB_DISK
с правильным именем папки, где ваш диск монтируется под /media/
каталог.
Даже если вы заставите это работать, все файлы будут иметь одинаковую дату. Похоже, это не поможет.
Что бы сработало, это скрипт с жестко закодированными именами файлов. Жесткое кодирование имен файлов необходимо для создания предпочтительного порядка. Простое "касание" их в предпочтительном порядке "создаст" ваш заказ, поэтому вам не нужно вводить фактические даты в команду касания.
#!/bin/bash
cd /path/to/folder1
touch file1
sleep 1
touch file4
sleep 1
touch file2
sleep 1
touch "file 5 with spaces"
cd /path/to/folder2
touch file9
sleep 1
touch file3
sleep 1
Команды "сна" необходимы, чтобы заставить каждое "прикосновение" иметь различное время. Обратите внимание, что файл "числа" не имеет значения, и обрабатываются в числовом порядке. Однако порядок в сценарии создает порядок "обработки".
Обратите внимание, что вам нужно будет обновлять и запускать скрипт каждый раз, когда вы добавляете новые песни / файлы.
Редактировать: я только что увидел сообщение "отсортированный поиск". Это, вероятно, будет работать лучше.:)
Ответ Доби находится на правильном пути, но он потерпит неудачу, если любое имя каталога содержит пробел. В общем случае, не рекомендуется использовать вывод find
в сценарии по той же причине, что вывод ls
не должен анализироваться скриптом: имена файлов могут легко содержать символы, которые затрудняют или делают невозможным интерпретацию скриптом.
Здесь есть несколько вариантов. Одним из них является использование -print0
переключиться на find
в сочетании с соответствующим призывом к xargs
, Смотрите соответствующие man
страницы для деталей.
Подход, который я рекомендую, проще для конкретной проблемы и использует глобализацию оболочки для получения точных имен файлов:
for i in /media/USB_Drive/*; do
[[ -d "$i" ]] || continue # skip non-directories
echo "touching $i..."
touch "$i"
done
Обратите внимание, что использование глобуса автоматически приводит к алфавитному списку.