您好我是bash脚本的新手。我正在尝试编写一个代码,为我提供用户在提示时输入的用户名和用户输入的文件修改日期的所有文件。我无法使用用户提供的日期对文件进行排序和显示。请帮忙。
#!/bin/bash
echo "Enter your username: "
read username
echo "Enter the date file is created: "
read date
ls -l | find mypath -user "$username" | find mypath -regextype posix-extended -regex "^[0-9]*[- / .][0-9]*[- / .][0-9]*$" "$date"
答案 0 :(得分:0)
一次一步地完成您的代码。
ls -l
将打印正在运行脚本的目录的内容。然后您将该输出发送到 find ,这使得ls -l
运行成为冗余,因为找不到stdin的任何内容
然后您将find mypath -user "$username"
的输出(现在只是一个文件列表)发送到另一个find命令,该命令再次从stdin中取出任何内容。
快速谷歌"找到创建日期"返回this帖子,告诉我们您甚至无法使用find来获取创建日期!
Pipes(" |")用于重定向一个命令的输出,以用作另一个命令的输入。
因此,对于修改日期,我会使用 -
find mydir -user "$username" -newerat $date ! -newerat $(expr $date + 1)
您必须输入日期yyyymmdd - 如果您想扩展功能(例如,能够使用yyyy,请查看sed
,awk
和grep
MM-DD)。