gpt4 book ai didi

linux - 删除指定文件夹及其内容以外的文件夹内容

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:01 26 4
gpt4 key购买 nike

根据我的另一个问题,我有一个脚本可以快速轻松地更新 drupal 核心。

目前,它将站点文件夹移出目录,删除站点文件夹的内容,然后将站点文件夹移回。

mv ./sites ../sites
rm -rf *
cp -R /sources/drupal-7/* ./
mv ../sites ./sites

鉴于站点文件夹可能会变得相当大,我想尽可能避免移动它,并且只删除其他文件夹,只留下站点文件夹。

我尝试了互联网上的其他一些建议,其中一些来自这里,其中一个使用了查找,但也删除了站点文件夹中的文件和文件夹。

我还想保持源文件夹完整,即:在其中为新站点保留一个站点文件夹,并将仅复制其他文件/文件夹移动到该站点以进行更新,例如:

rm -rf * !sites/*
cp -R /sources/drupal-7/* ./ !sites/*

我尝试了很多方法,其中大部分根本不起作用或给出语法错误(或删除网站或其内容)

编辑:为清楚起见,这里是完整的脚本:

#/bin/bash
CWD=$(pwd)
cd $CWD
echo $CWD
if [[ $CWD = "/var/www/vhosts/"* ]]; then
echo "Updating drupal core files"
read -r -p "do you need to keep the .htaccess file? [y/N]" response

if [ $response = y ]
then
/usr/local/bin/drush vset maintenance_mode 1
mv ./.htaccess ../.htaccess
mv ./sites ../sites
rm -rf *
cp -R /sources/drupal-7/* ./
cp -R /sources/drupal-7/.* ./
mv ../sites ./sites
mv ../.htaccess ./.htaccess
chown -R httpd:httpd *
/usr/local/bin/drush up && /usr/local/bin/drush updb
/usr/local/bin/drush cc all && /usr/local/bin/drush cron
/usr/local/bin/drush vset maintenance_mode 0

elif [ $response = n ]
then
/usr/local/bin/drush vset maintenance_mode 1
mv ./sites ../sites
rm -rf *
cp -R /sources/drupal-7/* ./
cp -R /sources/drupal-7/.* ./
mv ../sites ./sites
chown -R httpd:httpd *
/usr/local/bin/drush up && /usr/local/bin/drush updb
/usr/local/bin/drush cc all && /usr/local/bin/drush cron
/usr/local/bin/drush vset maintenance_mode 0
else
echo "Response must be either y or n"
fi

else
echo "not in a web directory, exiting"
fi

最佳答案

根据评论中的建议更新:

find /path/to/dir -maxdepth 1 -mindepth 1 ! -name "sites" -type d -print0 | xargs -0 rm -rf

关于linux - 删除指定文件夹及其内容以外的文件夹内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22098225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com