Сценарий Bash для перемещения файлов в папку на основе совпадающих идентификационных номеров?

Me gusta mucho slock, pero no puedo usarlo en rhel. Usé xlockmore hasta que encontré i3lock que es más mi estilo.

Para obtener el bloqueo de pantalla automático después de un tiempo de espera, tuve que activar mi propio xautolock rpm. Si alguien conoce un equivalente de xautolock en rhel, hágamelo saber.

2
10.11.2018, 16:27
1 ответ
#!/bin/bash
cd ~/Desktop/a/
for f in *.jpg; do
  target_part="${f%.jpg}"
  target="${target_part#Photo }"
  mv "$f" -t "${target} "*
done

Пояснение

Здесь происходят две замены параметров . Во-первых, target_part="${f%.jpg}"удаляет конечный .jpgиз имени файла, затем target="${target_part#Photo }"удаляетPhoto(+ пробел )впереди. Это оставляет число в переменной target.

Затем вы просто перемещаете файл в каталог, который начинается с номера в target, то есть mv "$f" -t "${target} "*. Это предполагает, что существует только одно имя файла, начинающееся с каждой цифры, и это каталог.

Дополнительная информация

В вашем сценарии было несколько ошибок. Во-первых, шебанг был неправильным. Вместо !#должно быть #!.

Во-вторых, я не уверен, что это просто опечатка, но двойная кавычка должна быть с ", а не с .

Я также не уверен, почему *в вашей подстановке параметра ${f%Photo*}и то, что переменная $subссылается на (, никогда не присваивалась ).

Наконец, вместо того, чтобы использовать ~/Desktop/a/*.jpgдля цикла, я предпочел cdнепосредственно в него,для облегчения подстановки параметров.

1
28.04.2021, 23:40

Теги

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