2016-05-11 20 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的第一個解決方案不起作用。 012v mv:目標記錄_-_ 51409.20160503 _-_ 1043 + 0200.txt必須是目錄 用法:mv [-f] [-i] f1 f2 mv [-f] [-i] f1 ... fn d1 mv [-f] [-i] d1 d2 但第二個解決方案完成了這項工作。 –

+0

@hectorlerma對不起,這是未經測試的。查看確實有效的更新。我還增加了另一種方法。 – fedorqui

+0

@hectorlerma也請注意,如果對你有幫助,你可以接受答案 – fedorqui

相關問題