2016-07-10 6 views
0

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

ls -t1 /Users/name/downloads | head -n 1 | > Users/name/targetfolder 

ответ

0

Вы правильно найти самый последний элемент с:

ls -t1 /Users/name/downloads | head -n 1 

Однако вы делаете ошибку АВЭС что.

Что вы можете сделать, это:

mv $(ls -t1 /Users/name/downloads | head -n 1) Users/name/targetfolder 

Выше стандартный mv команда, чей синтаксис:

mv filename target_filename # if you are renaming a file. Or, 

mv filename target_dirname # if moving the file to a different directory. 

команда Все между $() заменяется его выходом.

So $(ls -t1 /Users/name/downloads | head -n 1) заменен на последний файл.

Таким образом, в основном, команда означает mv most_recent_file Users/name/targetfolder

0

Если элемент представляет собой файл, вы можете направить ваши head команда cp:

ls -t1 /Users/name/downloads | head -n 1 | xargs cp -t Users/name/targetfolder 

Вы также можете добавить тест, чтобы проверить, может ли этот товар является файлом или каталогом:

last=$(ls -t1 . | head -n 1) 
todir=Users/name/targetfolder 

[ -d $last ] && cp -r "$last" "$todir" || cp "$last" "$todir"