【问题标题】:Bash: for loop, copy, backupBash:for循环、复制、备份
【发布时间】:2010-03-16 21:05:17
【问题描述】:

嘿,不是 100% 确定这个错误是什么意思。

% for f in "*" ; do cp $f ../backup/backup$f ; done
cp: ../backup/backup* not found

目的是将文件夹中的所有文件复制到备份文件夹中,并将文件重命名为备份。

【问题讨论】:

    标签: bash loops backup for-loop cp


    【解决方案1】:

    * 不应该用引号引起来:

    for f in * ; do cp $f ../backup/$f ; done
    

    当您使用引号时,这会阻止 shell 扩展它,因此它正在寻找一个名为 * 的文件,而不是目录中的所有文件,这就是您的意思。

    【讨论】:

      【解决方案2】:

      您引用了错误的内容:引用变量,而不是通配符!

      % for f in *; do cp "$f" "../backup/$f" ; done

      顺便说一句,在这种情况下,您可以这样做:

      % cp * ../backup/

      【讨论】:

        【解决方案3】:

        或者可能是这样的:

        cp -b * ../backup 
        

        如果你想重命名它们:

        % for f in * ; do cp "$f" "../backup/${f}-backup" ; done
        

        【讨论】:

          猜你喜欢
          • 2013-02-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-09
          • 1970-01-01
          • 2023-03-06
          • 2022-06-16
          • 1970-01-01
          相关资源
          最近更新 更多