Bash копирование файлов с переменными - PullRequest
0 голосов
/ 08 октября 2010

Впервые в сценарии bash, я пишу сценарий для копирования моих телешоу через папку загрузки в папку архива.

Пока у меня есть это:

find `*`show1`*`.avi |  cp \"" $0 "\" "/mnt/main/data/tv/Show1" 
find `*`show2`*`.avi |  cp \"" $0 "\" "/mnt/main/data/tv/Show2"

Я понимаю, что это не лучший метод, но мои навыки bash весьма ограничены.

Мне нужно знать, как я могу скопировать этот найденный файл или ничего не делать, если он не находит ничего подходящего (это будетcron скрипт).например.

find `*`show1`*`.avi |  cp "show1.hello.world.xvid.avi" "/mnt/main/data/tv/Show1" 
find `*`show2`*`.avi |  cp "show2.foo.bar.xvid.avi" "/mnt/main/data/tv/Show2" 
find `*`show3`*`.avi |  cp "null (nothing found)" "/mnt/main/data/tv/Show3"

Спасибо!

РЕДАКТИРОВАТЬ : Решено http://pastebin.com/aNLihR86

Ответы [ 2 ]

2 голосов
/ 08 октября 2010
find . -name "*show1*" -exec cp {} /mnt/main/data/tv/Show1 \;

(Замените. Каталогом, в который вы хотите посмотреть файлы)

0 голосов
/ 08 октября 2010

Баш 4 +

shopt -s globstar
shopt -s nullglob
for file in **/*show*
do
  case "$file" in
   *show1* ) dest="/mnt/main/data/tv/Show1" ;;
   *show2* ) dest="/mnt/main/data/tv/Show2" ;;
   *show3* ) dest="/mnt/main/data/tv/Show2";;
  esac
  cp "$file" "$dest"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...