shell脚本删除当前路径下,除了指定的几个文件以外的所有文件夹
时间: 2023-12-18 16:05:29 浏览: 42
您可以使用以下命令来删除当前路径下除了指定的几个文件以外的所有文件夹:
```
find . -type d ! \( -name "文件1" -o -name "文件2" -o -name "文件3" \) -exec rm -r {} \;
```
请将 "文件1"、"文件2"、"文件3" 替换为您要保留的文件名,例如:
```
find . -type d ! \( -name "保留1.txt" -o -name "保留2.jpg" -o -name "保留3.doc" \) -exec rm -r {} \;
```
这将会删除当前路径下除了 "保留1.txt"、"保留2.jpg"、"保留3.doc" 这几个文件以外的所有文件夹。请注意,这个命令也非常强大,因为它会直接删除所有文件夹,包括子目录中的文件夹和文件。因此,请谨慎使用此命令。
相关问题
shell脚本将文件夹中新增的文件定时sftp到指定路径
可以使用shell脚本结合cron定时任务来实现定时sftp文件夹中新增的文件到指定路径。以下是一个简单的示例脚本:
```bash
#!/bin/bash
# 目标sftp服务器信息
HOST="sftp.example.com"
PORT=22
USERNAME="username"
PASSWORD="password"
DEST_FOLDER="/path/to/destination/folder"
# 待监控的本地文件夹
SOURCE_FOLDER="/path/to/source/folder"
# 获取最后一次监控的时间
LAST_RUN=$(cat /tmp/sftp_last_run)
if [ -z "$LAST_RUN" ]; then
LAST_RUN=0
fi
# 查找新增的文件
FILES=$(find $SOURCE_FOLDER -type f -newermt @$LAST_RUN)
# 上传新增的文件
for FILE in $FILES; do
echo "Uploading $FILE..."
sftp -P $PORT $USERNAME@$HOST:$DEST_FOLDER <<< "put $FILE"
done
# 保存最后一次监控的时间
date +%s > /tmp/sftp_last_run
```
将上述脚本保存为 `sftp.sh`,然后使用 `cron` 定时任务来定时执行该脚本即可。例如,将任务设置为每小时执行一次,可以将以下内容添加到 `crontab` 中:
```
0 * * * * /bin/bash /path/to/sftp.sh
```
注意,为了确保脚本正常运行,需要确保以下几点:
- 目标sftp服务器信息正确,并且能够通过用户名和密码进行认证。
- 待监控的本地文件夹存在,并且具有读取和执行权限。
- 目标文件夹在sftp服务器上存在,并且具有写入权限。
- cron服务已经启动,并且能够正常执行定时任务。
写一个shell脚本,增量备份周一到周三的数据库文件
当然,我可以帮你写一个Shell脚本来实现增量备份数据库文件。以下是一个示例脚本:
```shell
#!/bin/bash
# 设置备份路径
backup_dir="/path/to/backup"
# 获取当前日期
current_date=$(date +%Y-%m-%d)
# 获取当前星期几
current_day=$(date +%u)
# 判断是否是周一到周三,如果不是则退出
if [ $current_day -gt 3 ]; then
echo "今天不是周一到周三,无需备份"
exit 0
fi
# 创建以当前日期命名的备份文件夹
backup_folder="$backup_dir/$current_date"
mkdir -p $backup_folder
# 备份数据库文件到指定文件夹
cp /path/to/database/file $backup_folder
# 打印备份完成消息
echo "备份已完成,文件保存在 $backup_folder"
```
请记得将 `/path/to/backup` 替换为你想要保存备份文件的目录路径,将 `/path/to/database/file` 替换为你要备份的数据库文件路径。
这个脚本会在周一到周三运行,并将数据库文件复制到以当天日期命名的文件夹中。你可以将脚本保存为一个可执行文件(例如 `backup.sh`),然后通过设置定时任务来自动运行它。