2009-11-20 2 views
0

У меня есть видеофайлы, все закончившиеся на .wmv .mov .mpg. У меня есть музыкальные файлы, заканчивающиеся на .mp3 .wma. И, наконец, у меня есть некоторые текстовые файлы, которые заканчиваются в расширении .txtбазовый сценарий оболочки

Я написал сценарий оболочки, который создает подпапки, один для музыкальных файлов, один для видеофайлов и один для текстовых файлов, а затем организует все файлов в правильные подпапки. Но я столкнулся с небольшой проблемой ...

*** Я хотел бы, чтобы сценарий был интерактивным и предлагал пользователю, хочет ли он организовать файлы. Кроме того, я хотел бы, чтобы сценарий записывал файл журнала, который содержит для каждого файла исходное имя файла, а также новый путь/имя файла, к которому он был перемещен. И я хотел бы, чтобы сценарий принял аргумент командной строки, который является папкой, содержащей неорганизованные файлы. Это должно позволить сценарию быть размещенным и запущенным из любой точки файловой системы и принимать любую папку неорганизованных файлов.

Пример:

organizefiles.sh MyStuff/СМИ

, где вложенные папки будут идти в "медиа"

Любые идеи о том, как сделать это? Спасибо!

+2

Вы не можете просто опубликовать список функций, а затем сказать «Любые идеи о том, как это сделать?». Выберите одну конкретную вещь и спросите, как это сделать. В противном случае это звучит так, будто вы просто просите SO написать свой скрипт для вас. –

+1

Вы должны указать взаимодействие с пользователем более подробно. И вы должны показать код, который у вас есть. –

+0

Вы прямо здесь, вы найдете то, что у меня есть –

ответ

4

вот для вас частичная реализация. Постарайтесь сделать все остальное самостоятельно.

find /path -type f \(-iname "*.mp3" -o -iname "*.txt" \) -exec file -N "{}" + | while IFS=":" read -r filename type 
do 
    case "$type" in 
     *[vV]ideo*|*AVI*) echo "Video: $filename";; 
     *[Aa]udio*|*MPEG*ADTS*) echo "Audio file: $filename";; 
     *[Aa]scii*[tT]ext*) echo "Text: $filename" ;; 
     *) echo "No type: $filename-> type: $type";; 
    esac 
done 

Пожалуйста, прочитайте bash tutorial или this, чтобы ознакомиться со сценариями оболочки.

+0

Ты слишком добрый, сэр. Это похоже на мини-учебник! – codebliss

2

Я бы рекомендовал переключиться на python, гораздо проще написать и поддерживать такой код.

Что касается Баш:

  1. Чтение ввода: read
  2. Чтение аргументы командной строки: see here
  3. Запись в лог-файл, просто сделать echo "something" >> mylogfile.log
+0

Спасибо за ссылки, они были очень полезны! –

0

Вот сценарий я до сих пор

 
#!/bin/bash 
mkdir movies 
mkdir songs 
mkdir textfiles 
mv *.wmv movies 
mv *.mov movies 
mv *.mpg movies 
mv *.mp3 songs 
mv *.wma songs 
mv *.txt text 
ls -l movies, >> log.txt 
ls -l songs >> log.txt 
ls -l textfiles >> log.txt 
+1

Вы должны размещать комментарии в комментариях или редактировать исходный вопрос. –

+0

Прошу прощения, спасибо! –

Смежные вопросы