shell|实现对指定时间内文件的批量操作
2018-11-30 本文已影响18人
王诗翔
我的某个目录有以下文件:
$ ls
00d112a9-c4a4-56f2-b367-7298a852923f 5c926099-7c9e-5d6c-afd4-20d7f3afd2ed b8a70b42-8ccb-5e65-a7ad-790512429129 f00c74f0-8fd4-582f-ac90-3e257fc338b7
01ebbb29-f4fe-54ba-a81d-99d64d8c31ba 6505d36c-9011-5eb3-a869-7f7d648cd662 ca014620-ab20-5798-ba0b-89c7b8da3ef7 f0f86477-fa40-52f4-b71b-d081a39a6b37
065ec0ee-85c5-5e4a-b713-1deea86d0db1 6946e713-9e0c-5734-8e18-b3771839375e cde17a66-7968-5753-8b59-5921fde5e703 f5fc35f9-f78c-5c68-ad12-f2dfbc4b1f0c
2700f155-751c-5702-861d-04bae220a72d 757c3ade-b04b-59f4-ae7a-f194cb990b7a d2e69c2e-4bb2-5dae-a9c7-86a888b11b7f f78bd60b-a05c-59dd-b938-d76912c4104d
2a6fe243-39b5-5553-af04-6768877db9f4 7f3a7814-5dac-5acb-9d77-856afe5f867e d912a28d-4bb9-55e1-851a-99aef2c72bff fd72fb30-ad56-52b2-b1c1-10692ec1248b
2ee5e4c2-b84e-5740-af3d-46528ab8ccd0 8310fee5-18ea-5306-8c0e-bd48500c3795 da83c01c-3ed0-5100-929a-b1250f374108 fecbcbe1-5e1a-5d73-a9f6-da6b48283b4d
32b7df2f-de6c-578b-9f1d-e42789d90588 911d443a-1d59-52ae-9d63-6f103eb4d217 dcfffce3-27c5-5885-a142-4c1db3c9c621 icgc-get-ID
33d28b7f-f0c5-58cd-9f73-f4c7dbe6cc24 94dca9ba-88e1-5ae8-a21c-c2bad8bc9f79 dee0bd94-3d75-561f-88c9-074f75a3b3ca manifest.pdc.brca.sh
37fa1a63-4b28-5ee8-abfb-ea4ca0ea6c8e 996401cb-f297-5264-9929-a28e72c6f13a download_tcga_prad_WGS.pbs manifest.pdc.prad.sh
39e70769-18dc-51d1-b2ad-e7da1443e7b2 aaeadda6-3ce9-5726-9f26-c2dae115aa26 download_tcga_prad_WGS.pbs.o305047
3c500ad6-2db0-5a00-83c3-62fdebd44459 ac1b48a8-40a9-59e8-b2f5-db08b2efc525 e5b3feb9-58dc-5a41-b3be-f3c4aaefe17d
40c99cd5-9850-5128-a3ef-a006721c2f48 b3f04f3a-5260-534e-9480-7d1ca5c7bce0 e8b15611-86fa-58d8-9a8e-d96ce1f6127e
看起来像一堆乱码的文件其实是非常重要的数据文件,我把它下载到该目录下后发现它应该属于某个特定的子目录,现在这样看起来太乱了。那么就得想办法把这些文件区分出来,然后mv移动到一个子目录下去。
进一步查看更详细的信息,发现它们上一次的修改时间都是2016年!而其他文件我很清楚是我最近新建的。
$ ll | wc -l
46
$ ll
总用量 4986280179
-rw-rw-r-- 1 liuxs liuxs 100546153647 8月 6 2016 00d112a9-c4a4-56f2-b367-7298a852923f
-rw-rw-r-- 1 liuxs liuxs 111069577771 8月 3 2016 01ebbb29-f4fe-54ba-a81d-99d64d8c31ba
-rw-rw-r-- 1 liuxs liuxs 179708610953 8月 4 2016 065ec0ee-85c5-5e4a-b713-1deea86d0db1
-rw-rw-r-- 1 liuxs liuxs 156471582510 7月 31 2016 2700f155-751c-5702-861d-04bae220a72d
-rw-rw-r-- 1 liuxs liuxs 102866933926 8月 10 2016 2a6fe243-39b5-5553-af04-6768877db9f4
-rw-rw-r-- 1 liuxs liuxs 91212229333 8月 9 2016 2ee5e4c2-b84e-5740-af3d-46528ab8ccd0
-rw-rw-r-- 1 liuxs liuxs 84096730065 8月 8 2016 32b7df2f-de6c-578b-9f1d-e42789d90588
-rw-rw-r-- 1 liuxs liuxs 114306165548 7月 30 2016 33d28b7f-f0c5-58cd-9f73-f4c7dbe6cc24
-rw-rw-r-- 1 liuxs liuxs 149158275176 8月 5 2016 37fa1a63-4b28-5ee8-abfb-ea4ca0ea6c8e
-rw-rw-r-- 1 liuxs liuxs 97144931362 7月 26 2016 39e70769-18dc-51d1-b2ad-e7da1443e7b2
-rw-rw-r-- 1 liuxs liuxs 102237285883 8月 24 2016 3c500ad6-2db0-5a00-83c3-62fdebd44459
-rw-rw-r-- 1 liuxs liuxs 99142561853 8月 2 2016 40c99cd5-9850-5128-a3ef-a006721c2f48
-rw-rw-r-- 1 liuxs liuxs 175486514350 8月 10 2016 5c926099-7c9e-5d6c-afd4-20d7f3afd2ed
-rw-rw-r-- 1 liuxs liuxs 175552227280 7月 29 2016 6505d36c-9011-5eb3-a869-7f7d648cd662
-rw-rw-r-- 1 liuxs liuxs 155743595213 7月 30 2016 6946e713-9e0c-5734-8e18-b3771839375e
-rw-rw-r-- 1 liuxs liuxs 81199018225 8月 5 2016 757c3ade-b04b-59f4-ae7a-f194cb990b7a
-rw-rw-r-- 1 liuxs liuxs 148677243873 8月 10 2016 7f3a7814-5dac-5acb-9d77-856afe5f867e
-rw-rw-r-- 1 liuxs liuxs 110467383562 8月 23 2016 8310fee5-18ea-5306-8c0e-bd48500c3795
-rw-rw-r-- 1 liuxs liuxs 138421863845 8月 2 2016 911d443a-1d59-52ae-9d63-6f103eb4d217
-rw-rw-r-- 1 liuxs liuxs 137443754891 8月 4 2016 94dca9ba-88e1-5ae8-a21c-c2bad8bc9f79
-rw-rw-r-- 1 liuxs liuxs 98537989718 8月 1 2016 996401cb-f297-5264-9929-a28e72c6f13a
-rw-rw-r-- 1 liuxs liuxs 215234949069 8月 11 2016 aaeadda6-3ce9-5726-9f26-c2dae115aa26
-rw-rw-r-- 1 liuxs liuxs 88523081896 8月 6 2016 ac1b48a8-40a9-59e8-b2f5-db08b2efc525
-rw-rw-r-- 1 liuxs liuxs 148515422682 7月 24 2016 b3f04f3a-5260-534e-9480-7d1ca5c7bce0
-rw-rw-r-- 1 liuxs liuxs 151610623269 7月 24 2016 b8a70b42-8ccb-5e65-a7ad-790512429129
-rw-rw-r-- 1 liuxs liuxs 182366112150 8月 8 2016 ca014620-ab20-5798-ba0b-89c7b8da3ef7
-rw-rw-r-- 1 liuxs liuxs 93869793148 7月 25 2016 cde17a66-7968-5753-8b59-5921fde5e703
-rw-rw-r-- 1 liuxs liuxs 133240390236 7月 26 2016 d2e69c2e-4bb2-5dae-a9c7-86a888b11b7f
-rw-rw-r-- 1 liuxs liuxs 112197647128 7月 24 2016 d912a28d-4bb9-55e1-851a-99aef2c72bff
-rw-rw-r-- 1 liuxs liuxs 92331491021 7月 28 2016 da83c01c-3ed0-5100-929a-b1250f374108
-rw-rw-r-- 1 liuxs liuxs 98878614557 8月 11 2016 dcfffce3-27c5-5885-a142-4c1db3c9c621
-rw-rw-r-- 1 liuxs liuxs 154476805942 8月 3 2016 dee0bd94-3d75-561f-88c9-074f75a3b3ca
-rw-rw-rw- 1 liuxs liuxs 392 11月 27 10:33 download_tcga_prad_WGS.pbs
-rw------- 1 liuxs liuxs 1337837821 11月 30 03:10 download_tcga_prad_WGS.pbs.o305047
-rw-rw-r-- 1 liuxs liuxs 139985674871 8月 1 2016 e5b3feb9-58dc-5a41-b3be-f3c4aaefe17d
-rw-rw-r-- 1 liuxs liuxs 100818451042 8月 3 2016 e8b15611-86fa-58d8-9a8e-d96ce1f6127e
-rw-rw-r-- 1 liuxs liuxs 91913138214 8月 17 2016 f00c74f0-8fd4-582f-ac90-3e257fc338b7
-rw-rw-r-- 1 liuxs liuxs 154902140155 8月 2 2016 f0f86477-fa40-52f4-b71b-d081a39a6b37
-rw-rw-r-- 1 liuxs liuxs 95251528382 8月 4 2016 f5fc35f9-f78c-5c68-ad12-f2dfbc4b1f0c
-rw-rw-r-- 1 liuxs liuxs 149602328836 8月 6 2016 f78bd60b-a05c-59dd-b938-d76912c4104d
-rw-rw-r-- 1 liuxs liuxs 153827147765 7月 28 2016 fd72fb30-ad56-52b2-b1c1-10692ec1248b
-rw-rw-r-- 1 liuxs liuxs 137577070586 7月 30 2016 fecbcbe1-5e1a-5d73-a9f6-da6b48283b4d
-rw-rw-r-- 1 liuxs liuxs 77 11月 27 09:59 icgc-get-ID
-rw-r--r-- 1 liuxs liuxs 29399 11月 27 12:37 manifest.pdc.brca.sh
-rw-r--r-- 1 liuxs liuxs 6791 11月 27 10:26 manifest.pdc.prad.sh
于是我想到了使用find命令加并行处理parallel(xargs也是也可以的)再用mv搞定。
$ mkdir prad-us
$ find . -mtime +20 -type f | parallel mv {} ./prad-us/
$ ls
download_tcga_prad_WGS.pbs download_tcga_prad_WGS.pbs.o305047 icgc-get-ID manifest.pdc.brca.sh manifest.pdc.prad.sh prad-us
这里最重要的是
find . -mtime +20 -type f | parallel mv {} ./prad-us/
需要了解linux 文件的几种时间 (以 find 为例):
- atime 最后一次访问时间, 如 ls, more 等, 但 chmod, chown, ls, stat 等不会修改些时间, 使用 ls -utl 可以按此时间顺序查看;
- ctime 最后一次状态修改时间, 如 chmod, chown 等状态时间改变但修改时间不会改变, 使用 stat file 可以查看;
- mtime 最后一次内容修改时间, 如 vi 保存后等, 修改时间发生改变的话, atime 和 ctime 也相应跟着发生改变.
我使用find . -mtime +20 -type f
找出当前目录20天以前修改的文件,然后并行执行mv命令,{}
会替换为find命令找到的文件。
这里的mv命令可以替换为任何你想要对find找到文件的操作,这波技能Get没?
更多关于按时间查找文件的例子可以参考Linux 查找某时间段内的所有文件。