Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将时间、日期和字符串分开_Linux_Bash_Datetime_Pattern Matching - Fatal编程技术网

Linux 将时间、日期和字符串分开

Linux 将时间、日期和字符串分开,linux,bash,datetime,pattern-matching,Linux,Bash,Datetime,Pattern Matching,我有一些文件的名称中包含以下字符串:“20171011095942”,即日期和时间“2017/10/11 09:59:42” 我需要选择在09点开始的所有文件,并将它们放在另一个文件夹中。如果我使用命令: date -d '20171011095942' +'%R' 上面写着“无效日期”。如何将时间与该字符串分开,以便仅选择这些文件? 谢谢大家! 使用find+mv命令: find . -type f -regextype posix-egrep -regex ".*_2017101109[0

我有一些文件的名称中包含以下字符串:“20171011095942”,即日期和时间“2017/10/11 09:59:42”

我需要选择在09点开始的所有文件,并将它们放在另一个文件夹中。如果我使用命令:

date -d '20171011095942' +'%R'
上面写着“无效日期”。如何将时间与该字符串分开,以便仅选择这些文件?
谢谢大家!

使用find+mv命令:

find . -type f -regextype posix-egrep -regex ".*_2017101109[0-9]{4}_.*\.gz" -exec mv {} dest_dir/ \;

在上述命令中,将
dest_dir
更改为您的“另一个文件夹”

*\u 2017101109[0-9]{4}.*\.gz
-regex模式匹配包含所需序列的所有文件名

  • *
    -匹配任何字符

  • \u 2017101109
    -匹配关键数字序列(

  • [0-9]{4}
    -确保上述序列后面有4个指向

  • \.gz
    -确保文件扩展名为
    .gz


文件名格式是否固定<代码>文本\u文本\u 20171011095942\u 156.DAT.gz?你能给我们举一些实际的例子吗?i、 e.日期部分是否在第2次
之后开始?是的,名称格式是固定的。文件名的唯一区别是数字序列,因为它们指向另一个时间和日期,以及定义文件号的数字(155156)。日期部分总是在第二个“u”之后开始这太好了,谢谢!只是一个小问题。我知道这个命令在当前目录中搜索文件。您使用了“-regextype posix egrep”,因此可以使用扩展正则表达式,但我不太理解您在正则表达式中使用的正则表达式。你能解释一下吗?
find . -type f -regextype posix-egrep -regex ".*_2017101109[0-9]{4}_.*\.gz" -exec mv {} dest_dir/ \;