您好我是Linux的新手,我要问的是使用awk和xargs在linux上移动文件,如果我重新发布,请道歉..
我有这样的apprx 1000-5000文件:
-rw-rw-r-- 1 wm files 77641 Mar 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 files 77655 5月3日11:20 sendOrder.ZBAM.0005167034-20130503 11:20:37.txt
-rw-rw-r-- 1 wm files 77661 5月3日11:20 sendOrder.ZBAM.0005167035-20130503 11:20:38.txt
-rw-rw-r-- 1 wm files 77556 5月3日11:20 sendOrder.ZBAM.0005167036-20130503 11:20:39.txt
-rw-rw-r-- 1 wm files 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,所以我正在使用:
第1步
ls -la|grep -e "May"|awk "{print $9, $10}" > some.files
xargs -0 some.files mv -t dir/newdir/
第2步不起作用..我该怎么办?我正在使用Linux CentOS 5.3
答案 0 :(得分:1)
可能有400种方法可以做到这一点。使用find可能是更有效的方法,但是:
您可以使用for循环:
for i in `ls`; do mv $i dir/newdir/; done
或者使用您在步骤1中创建的文件的while循环:
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/
答案 1 :(得分:0)
使用GNU Parallel,您可以:
ls | parallel -X mv {} dir/newdir/
10秒安装:
wget -O - pi.dk/3 | sh
了解详情:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1