2013-07-02 27 views
0

你好,我是在Linux新手,我什麼都問的是關於使用awk和xargs的,道歉,如果我重新張貼在Linux移動文件..如何在Linux移動多個文件用空格

我有apprx 1000-5000文件是這樣的:

-RW-RW-R-- 1 WM文件77641 3月3日11:20 sendOrder.ZBAM.0005167032-20130503 11:20:35.txt
-rw- rw-r-- 1 wm files 77647 Apr 3 11:20 sendOrder.ZBAM.0005167033-20130503 11:20:36.txt
-rw-rw-r-- 1個wm文件77655 5月3日11:20 sendOrder.ZBAM .0005167034-20130503 11:20:37.txt
-rw-rw-r - 1 wm files 77661 May 3 11:20 sendOrder.ZBAM.0005167035-20130503 11:20:38.txt
-rw-rw-r-- 1 wm files 77556 May 3 11:20 sendOrder.ZBAM.0005167036-20130503 11: 20:39.txt
-rw-rw-r-- 1個wm文件77549 5月3日11:20 sendOrder.ZBAM.0005167037-20130503 11:20:40.txt
-rw-rw-r-- 1 wm files 77549 Jun 3 11:20 sendOrder.ZBAM.0005167038-20130503 11:20:41.txt
-rw-rw-r-- 1 wm files 77543 Jun 3 11:20 sendOrder.ZBAM.0005167039-20130503 11:20 :42.txt

正如你所看到的文件名包含空格在-20130503 11:20:42.txt,所以我使用:

STEP 1

ls -la|grep -e "May"|awk "{print $9, $10}" > some.files


在步驟1中我已經得到了列表文件我想的月移動 「五一」 裏面some.files

STEP 2

xargs -0 some.files mv -t dir/newdir/

步驟2不起作用..我該怎麼辦?我使用Linux CentOS的5.3

+0

Thi這個問題似乎是無關緊要的,因爲它是關於使用Unix命令的。 – madth3

+0

1.不要分析'ls'。 2。使用'find'列出文件,然後輸出到'xargs'或使用'-exec'選項。 3.提高你的搜索技能;你將能夠找到許多類似問題的例子。 – devnull

+0

我可以使用find列出文件嗎?因爲我需要我選擇的月份文件列表,這就是我使用awk的原因。 –

回答

1

有可能是400點的方式來做到這一點..使用find很可能是更有效的方式,但是:

您可以使用一個for循環:

for i in `ls`; do mv $i dir/newdir/; done 

或者與文件while循環您在步驟1中創建:

ls -la|grep -e "May"|awk "{print $9, $10}" > some.files; cat some.files | while read mFILE; do mv $mFILE dir/newdir; done 

或者與find(其中+30比X天以上):

find ./ -mtime +30 -exec mv dir/newdir {} \; 

,或者,如果你想使用AWK和xargs的:

ls -la|grep -e "May"|awk "{print $9, $10}" | xargs mv dir/newdir/ 
+0

謝謝你的作品! –

+0

非常歡迎。 – fyn

+0

請注意'find'選項也會在子文件夾中找到文件!你可以添加'-maxdepth 1'來防止這種情況發生。 – drevicko

相關問題