用shell写一个脚本请检查 /opt 目录下是否存可执行文件
时间: 2024-02-05 13:12:59 浏览: 98
可以使用以下脚本来检查 /opt 目录下是否存在可执行文件:
```bash
#!/bin/bash
if [ -d /opt ]; then
echo "/opt directory exists"
cd /opt
if [ "$(ls -A)" ]; then
echo "There are files in /opt directory"
for file in $(ls); do
if [ -x "$file" ]; then
echo "$file is an executable file"
fi
done
else
echo "No files found in /opt directory"
fi
else
echo "/opt directory does not exist"
fi
```
该脚本首先检查 /opt 目录是否存在,如果存在则进入该目录并检查是否有文件存在。如果有文件存在,则通过循环遍历每个文件并检查是否为可执行文件,如果是则输出相应的信息。如果没有文件存在,则输出相应的信息。
相关问题
写一段shell脚本,要求: 1.脚本可通过外部传参的方式实现两个功能函数。 2.传入参数"pack",实现:拷贝"/opt/LinkRay/Resource/DataBase"目录下的"AssayDB.db"文件,并使用tar命令将其打包成"AssayDB.tar.gz"压缩包,最后拷贝这个压缩包到"/opt/LinkRay/IOTDevice/dbFile"目录下。 3.传入参数"unpack",实现:使用tar命令解压"/opt/LinkRay/IOTDevice/dbFile"目录下的"AssayDB.tar.gz"压缩包,并将解压后的文件拷贝至"/opt/LinkRay/Resource/DataBase"目录下。
好的,以下是您需要的shell脚本,记得将文件保存为.sh格式并添加可执行权限(chmod +x filename.sh)。
```bash
#!/bin/bash
# 判断传入参数个数
if [ $# -ne 1 ]; then
echo "Usage: $0 <pack/unpack>"
exit 1
fi
# 定义函数:压缩AssayDB.db并拷贝至指定目录
function pack_assaydb {
if [ ! -f /opt/LinkRay/Resource/DataBase/AssayDB.db ]; then
echo "AssayDB.db not found!"
exit 1
fi
cd /opt/LinkRay/Resource/DataBase
tar czvf AssayDB.tar.gz AssayDB.db
mv AssayDB.tar.gz /opt/LinkRay/IOTDevice/dbFile
}
# 定义函数:解压AssayDB.tar.gz并拷贝至指定目录
function unpack_assaydb {
if [ ! -f /opt/LinkRay/IOTDevice/dbFile/AssayDB.tar.gz ]; then
echo "AssayDB.tar.gz not found!"
exit 1
fi
cd /opt/LinkRay/Resource/DataBase
tar xzvf /opt/LinkRay/IOTDevice/dbFile/AssayDB.tar.gz
}
# 判断传入参数,执行相应函数
if [ $1 == "pack" ]; then
pack_assaydb
elif [ $1 == "unpack" ]; then
unpack_assaydb
else
echo "Usage: $0 <pack/unpack>"
exit 1
fi
echo "Done!"
```
使用方法:
1.压缩AssayDB.db并拷贝至指定目录
```bash
./filename.sh pack
```
2.解压AssayDB.tar.gz并拷贝至指定目录
```bash
./filename.sh unpack
```
写一个shell 比较HDFS上,删除/opt目录下文件夹名称中包含的日期超过7天的文件夹
您好,这是一个比较复杂的问题,但是可以通过使用Shell脚本结合一些简单的命令来完成。下面是一个示例脚本,可以实现您的要求:
```
#!/bin/bash
# 设置需要删除的目录的路径
path='/opt'
# 获取当前时间
current_time=$(date +%s)
# 遍历/opt目录下的所有文件夹,并进行操作
for dir in "$path"/*/; do
# 检查当前文件夹名称中是否有日期信息
if [[ $dir =~ [0-9]{8} ]]; then
# 获取文件夹名称中的日期,并将其转换为时间戳
dir_time=$(date -d ${dir:(-8)} +%s)
# 判断当前时间与文件夹中日期的间隔是否超过7天
if (( ($current_time - $dir_time) / 86400 > 7 )); then
# 删除该文件夹及其包含的文件
rm -rf "$dir"
fi
fi
done
```
使用这个脚本,您只需要将其保存为一个可执行文件,然后在终端中运行即可。在运行时,脚本将遍历/opt目录下的所有文件夹,并检查其中是否有包含日期信息的文件夹。如果是,则将其转换为时间戳,并将当前时间与文件夹中日期的间隔进行比较。如果间隔超过了7天,则删除该文件夹和其中的文件。
阅读全文