2016-05-11 10 views
1

Я пытаюсь создать команду из одной строки, чтобы перечислить последние 5 новых файлов в каталоге и переместить их в другое место. К настоящему времени я могу их перечислить, но не нашел способ переместить их, любой совет?Список последних 5 последних файлов и переместить их в другой каталог

ls -1t *.txt | head -5 

У меня есть:

$ ls -1t *.txt | head -5 
record_-_53810.20160511_-_1053+0200.txt 
record_-_53808.20160511_-_1048+0200.txt 
record_-_53570.20160510_-_1508+0200.txt 
record_-_53568.20160510_-_1503+0200.txt 
record_-_53566.20160510_-_1458+0200.txt 

ответ

1

Просто труба для xargs:

ls -1t *.txt | head -5 | xargs -i mv {} another_dir/ 

Или использовать само расширение:

mv $(ls -1t *.txt | head -5) another_dir/ 

Или даже цикл:

while IFS= read -r file; 
do 
    mv "$file" another_dir/ 
done < <(ls -1t *.txt | head -5) 
+0

Первое решение с использованием xargs не работает. mv: Целевая запись _-_ 51409.20160503 _-_ 1043 + 0200.txt должен быть каталогом Использование: mv [-f] [-i] f1 f2mv [-f] [-i] f1 ... fn d1 mv [-f] [-i] d1 d2 Но второе решение выполнило эту работу. –

+0

@hectorlerma жаль, что непроверено. См. Обновление, которое действительно работает. Я добавил еще один подход. – fedorqui

+0

@hectorlerma также, обратите внимание, что вы можете принять ответ, если он был вам полезен – fedorqui