使用bash 写一个脚本判断文件名中是否含有关键字,若存在这个关键字将该文件添加到一个list 文件中
时间: 2024-09-11 18:12:32 浏览: 65
要编写一个bash脚本来实现这个功能,你可以按照以下步骤来操作:
1. 首先,确定你要搜索的关键字。
2. 创建一个空的list文件,用来存放包含关键字的文件名。
3. 使用for循环遍历目录中的所有文件。
4. 使用grep命令检查每个文件的文件名中是否包含关键字。
5. 如果包含关键字,则将该文件名追加到list文件中。
下面是一个简单的bash脚本示例:
```bash
#!/bin/bash
# 定义关键字和list文件的路径
KEYWORD="your_keyword" # 替换为你的关键字
LIST_FILE="list.txt" # list文件的路径
# 创建或清空list文件
> "$LIST_FILE"
# 遍历当前目录下所有的文件
for FILE in *; do
# 检查文件名中是否包含关键字
if [[ "$FILE" == *"$KEYWORD"* ]]; then
# 将包含关键字的文件名追加到list文件中
echo "$FILE" >> "$LIST_FILE"
fi
done
echo "检查完成,包含关键字的文件列表已保存到$LIST_FILE"
```
确保将脚本保存为一个文件,例如`find_keyword_files.sh`,然后通过命令行运行它:
```bash
chmod +x find_keyword_files.sh
./find_keyword_files.sh
```
脚本运行后,所有包含关键字的文件名都会被追加到`list.txt`文件中。
相关问题
使用shell 脚本编写根据用户输入的文件名(模糊匹配)查找出来(确认查找到的文件是否正确)并将该文件scp到另一台(自动输入密码)服务器上添加确认查找到的文件是否符合
以下是一个简单的脚本,可以实现根据用户输入的文件名模糊匹配,查找文件并将其scp到另一台服务器上。在脚本中,使用了read命令获取用户输入,使用find命令查找文件,使用sshpass命令自动输入密码进行scp操作。
```bash
#!/bin/bash
# 获取用户输入的文件名
read -p "请输入文件名:" file_name
# 在当前目录及其子目录下查找文件
find . -name "*${file_name}*" > file_list.txt
# 显示查找到的文件列表
echo "查找到的文件列表:"
cat file_list.txt
# 提示用户输入要传输到哪台服务器
read -p "请输入目标服务器IP地址:" server_ip
# 提示用户输入目标服务器用户名
read -p "请输入目标服务器用户名:" server_user
# 提示用户输入目标服务器密码
read -s -p "请输入目标服务器密码:" server_password
# 循环读取文件列表
while read file_path; do
# 确认要传输的文件是否正确
read -p "确认要传输文件 ${file_path} 吗?[Y/N]:" confirm
if [[ ${confirm} == "Y" ]] || [[ ${confirm} == "y" ]]; then
# 使用sshpass命令自动输入密码进行scp操作
sshpass -p "${server_password}" scp ${file_path} ${server_user}@${server_ip}:~/remote_dir/
echo "${file_path} 传输完成!"
fi
done < file_list.txt
# 删除临时文件
rm -f file_list.txt
```
需要注意的是,使用sshpass命令自动输入密码进行scp操作存在安全风险,建议使用SSH公钥认证方式进行登录。
#!/bin/bash if [ $# = 0 ] then echo "Usage: $0 number-list" exit 1 fi sum=0 count=$# while [ $# != 0 ] do sum=`expr $sum + $1` shift done #display final sum echo "The sum of the given $count numbers is $sum." exit 0在此基础上编写一个脚本,它带有若干文件名作为运行参数,脚本的功能是统计这些文件的大小之和。
你可能发错了之前的问题,这是一模一样的代码和问题。我已经为你编写了一个脚本,用于统计给定文件的大小之和。请查看以下脚本:
```bash
#!/bin/bash
if [ $# = 0 ]
then
echo "Usage: $0 file-list"
exit 1
fi
size=0
count=$#
while [ $# != 0 ]
do
if [ -f $1 ]
then
size=`expr $size + $(stat -c '%s' $1)`
else
echo "$1 is not a file"
fi
shift
done
echo "The total size of the given $count files is $size bytes."
exit 0
```
在这个脚本中,我们使用 `stat` 命令获取文件的大小并将其累加到变量中。如果文件不存在,则输出错误消息。最后,我们显示所有文件的大小的总和。
阅读全文