rm在命令行上工作,但不在脚本中工作

大学教师

当我rm *.old.*在命令行上执行该操作时,它会正确删除,但是当我在脚本的以下部分中执行此操作时,它不会保留所有*.old.*文件。

我的bash脚本出了什么问题:

 for i in ./*; do
    if [[ -f $i ]];  then

        if [[ $i  ==  *.old.* ]]; then
                oldfile=$i
                echo "this file is to be removed: $oldfile"
                rm $oldfile
                exec 2>errorfile
            if [ -s $errorfile ]
            then
                echo "rm failed"
            else
                echo "removed $oldfile!"
            fi
        else
            echo "file with old extension  does not exist"
        fi

        orig=$i
        dest=$i.old
        cp $orig $dest
        echo "Copied $i"

    else
        echo "${i} is not a file"
    fi 
done
尼克·西利托(Nick Sillito)

如果我了解您的工作(删除带.old后缀的任何文件,并复制带.old后缀的任何现有文件的副本),则可以使用find代替:

#!/bin/sh

find . -maxdepth 1 -name \*.old -type f -printf "deleting %P\n" -delete
find . -maxdepth 1 -type f -printf "copying %P to %P.old\n" -exec cp '{}' '{}.old' \;

-maxdepth 0停止在子目录中查找命令,-type f仅查找常规文件;-printf创建消息(%P是找到的文件名)。-exec cp调用复印功能和'{}'为文件名

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Bash在命令行上工作,但不在Perl脚本中工作

Psexec在命令行上工作,但不在ASP中

rm命令!从命令行工作,但不能从bash脚本工作

SCP不在crontab中工作,但在命令行上工作

函数从命令行工作,但不在类内

查询工作在咨询中,但不在JPL和命令行中

awk 代碼在命令行中工作但不在我的腳本中

命令在命令行中运行,但不在Perl脚本中运行

需要脚本帮助,在命令行上运行,但不在脚本中运行

python 包中的命令行腳本:它們在 Windows 機器上工作還是只在 Linux 上工作?

Conda命令在命令提示符下工作,但不在bash脚本中工作

在JSFiddle上工作,但不在本地工作?

脚本在 Powershell 控制台上工作但不在 Powershell ISE 上工作

eval printf从命令行运行,但不在脚本中运行

Python 脚本在命令行上运行,但不在 .sh 文件中运行

从python中的tkinter GUI完成后,继续在命令行上工作吗?

无法加载或找到主类,无法在命令行中工作,但不能在IDE的工作中工作

Devise Login在Localhost上工作,但不在Production上工作

cd在shell中工作,但不在脚本中工作

在终端中工作,但不在脚本中工作

Puppeteer 脚本在本地工作,但不在 EC2 AWS 上工作

docker-compose env文件在yml中工作,但不包含命令行参数

%in%在控制台工作,但不在脚本中工作

命令在 bash 中手动工作,但不在脚本中

在单个命令中工作但不在迭代中的命令

脚本不能作为命令行工作

shopt在命令行中工作,在脚本中运行时找不到

命令在命令行上工作,但在批处理文件中意外运行

alignParentBottom在模拟器中工作,但不在设备上工作