移动或复制文件(如果该文件存在)? [重复]

问题描述 投票:0回答:4

我正在尝试运行命令

mv /var/www/my_folder/reports.html /tmp/

运行正常。但我想设置一个条件,例如如果该文件存在则仅运行命令。有这样的事吗

我可以放一个 shell 文件来代替。 对于外壳,尝试了以下事情

if [ -e /var/www/my_folder/reports.html ]
  then
  mv /var/www/my_folder/reports.html /tmp/
fi

但我需要一个命令。有人可以帮我解决这个问题吗?

linux centos mv
4个回答
24
投票

移动文件

/var/www/my_folder/reports.html
仅当它存在且常规文件时:

[ -f "/var/www/my_folder/reports.html" ] && mv "/var/www/my_folder/reports.html" /tmp/
  • -f
    - 如果文件存在并且是常规文件,则返回
    true

7
投票

如果存在文件,然后通过标准错误输出移动或回显消息

test -e /var/www/my_folder/reports.html && mv /var/www/my_folder/reports.html /tmp/ || echo "not existing the file" >&2

1
投票

也许您的用例是“如果不存在则创建,然后始终复制”。 然后:

touch myfile && cp myfile mydest/

0
投票

您可以简单地在 shell 脚本中完成

#!/bin/bash

# Check for the file
ls /var/www/my_folder/ | grep reports.html > /dev/null

# check output of the previous command
if [ $? -eq 0 ]
then
    # echo -e "Found file"
    mv /var/www/my_folder/reports.html /tmp/
else
    # echo -e "File is not in there"
fi

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.