我收到的文件名称采用以下格式构建

[2letters e.g.AF][6-digit-number sequence][Date in ccyymmdd][Time in hhmmss]

例如:

AF00010720120917144500.csv

我想使用文件的日期部分自动将这些文件加载​​到我的数据库中。

可能会像这样开始的东西:

#!/bin/bash
filename_datepart=$(echo `date -d "1 day ago" +"%d%m%Y"`)
filename="/home/hlosi/AF000107"$filename_datepart".csv"

但请记住,部件000107随每个新文件而变化。

#1楼 票数:1

这是一个BASH解决方案:

#!/bin/bash

#The full name
fullname="/home/hlosi/AF00010720120917144500.csv"

#Rip off the directory
file=$(basename "$fullname")

#Now pull out just the characters that we want
extract=$(echo "$file" | cut -c3-8)
echo "You want: $extract"

#2楼 票数:1

您可以使用通配符填写未知值

#!/bin/bash
file=/home/hlosi/AF??????`date -d "1 day ago" +"%d%m%Y"`??????.csv
echo $file

#3楼 票数:0

我想你想要这个。 如果您必须处理多个文件。

#!/bin/bash
fpath=/home/hlosi/
filename_datepart=$(echo `date -d "1 day ago" +"%d%m%Y"`)
files=$(find $fpath -iname "*$filename_datepart.csv")
for file in $files
do
    echo "found file: " $file
done

#4楼 票数:0

原谅我的无知有-atime -ctime -mtime我认为它是-ctime

find  -ctime 1  -name \*.csv -print

-mtime匹配csv的结尾并且正好是1天,这样的麻烦是它在24小时内工作所以文件少于24小时但仍然昨天不会显示

这将是一种更简单的处理方式,并且不关心文件名格式的更改以便将来进行校对。

cd pathtcsv;
d=`date -d "1 day ago" +"%d"`
d=$d find . -type f -name \*.csv -ctime 1 -exec ls -l {} \;|awk '$7 ~ d'|awk '{print $NF}'|  awk '{ print substr( $0, length($0) - 1, length($0) ) }'

#D = $ d设置为昨天的日期,它从yseterday找到csv结束它的文件然后做一个ls,管道进入awk并检查值7对昨天的日期,$ 7是ls -l上的日期值,它最后将最后一个字段和管道打印成最终的awk,打印字符串并从char位置拆分到char位置,这是你想要的? 你需要弄清楚你需要的字符是上面0到10的字符位置的另一个例子。

 d=$d find . -type f  -ctime 1 -name \*.csv -exec ls -l {} \;|awk '$7 ~ d'|awk '{print $NF}'|  awk '{ print substr( $0, 0, 10)}'

  ask by hlosukwakha translate from so

未解决问题?本站智能推荐:

1回复

AWK/Bash脚本尝试解析某些文件名

我正在尝试解析将包含1或2行的“ README”文件,这些行要么是“ index”和/或“ required”。 它们后跟一个“:”定界符和文件名,例如: 指数:index.html的 要求:file2.1:file2.2 索引和必需文件被解析并放入xml文档中。 因此,如果有索
2回复

使用awk作为帮助程序,从bash脚本中降低文件名

我编写了以下脚本,用于使用awk重命名当前目录中的文件 在将它们发送到shell之前,是否有更好的方法可以在printf中转义那些%s -es? 我对这样做更好的方式不感兴趣,比如只有shell或者其他东西,我想在这里使用awk ,并且只是询问最好的方法将带有空格的文件名传递给shell,
1回复

使用grep/awk从日志文件中提取文件名

我想从日志中找到文件的名称。 我使用awk命令尝试过,但没有成功。 我试过 : 示例日志:CommentService
3回复

AWK/bash如何在AWK中包含文件名

我有以下awk脚本: 我想用“#!/ bin / bash”编写一个bash脚本,但我需要在其中包含一个文件; 当程序显示文件。 在上面的代码中,我试图包含该文件,但它不起作用?
1回复

打印与awk脚本匹配的文件名

在我之前的问题之后 我有多个文本文件,可能有也可能没有用虚线包围的重复文本组。 所有lorem ipsum文本都不应包含在输出中。 $ cat /tmp/testAwk/file1.txt--------------important text oneimportant text two-
2回复

bash-awk从管道中获取文件名并使用它来创建另一个文件

我正在尝试获取文件名,重命名它,然后使用它来创建另一个文件。 创建的文件名为si而不是重命名文件名。 有什么建议?
5回复

如何使用awk分割文件并将每个文件名存储在Bash数组中

输入 名为input_file.csv的文件,具有7列和n行。 标题和行示例: 产量 n个文件,其中每个新文件中的行根据原始文件第7列中的值进行分组。 每个文件均以第7列中的共享值命名。注意:每个文件将具有相同的标头。 (脚本当前正在执行此操作。) 示例:如果原始文件中
6回复

如何使用awk或bash打印文件夹中的所有文件名?

我想打印文件夹中的所有文件名。如何使用 awk 或 bash 执行此操作?