Shell脚本,需要帮助检查是否存在文件



我有两个文件夹"下载"one_answers"文件"。我想将所有.txt文件表单下载移至文件。在将它们移至文件文件夹之前,我检查一下它是否已经存在于"文件"文件夹中。如果不存在,那么我将移动它们。

但是由于某些原因,我的脚本总是不存在。

#!/bin/sh
SOURCE_PATH="/Users/johnqin/Downloads/*.txt"
DEST_PATH="/Volumns/files/"
ls -l $SOURCE_PATH > /dev/null 2>&1
# check if there are any .txt files
if [ "$?" = "0" ]; then
    # loop through all .txt files
    for file in $SOURCE_PATH
    do
        # get only file name
        fname=`basename $file`
        #echo $fname
        targetFile="$DEST_PATH$fname"
        # echo $targetFile
        # check if this file exist in the target folder
        if [ -e "$targetFile" ]
        then
            echo "$fname exists, do nothing"
            # will do nothing
        else
            echo "$fname does not exist, move the file over"
            # will move file over
        fi
    done
else
    echo "did not find file"
fi  

更新:

我想我知道问题是什么。我的代码很好。"/volumns/files"文件夹是另一台Ubuntu服务器上的共享文件夹。登录时,我会自动安装此文件夹。该文件夹的地址是" smb://ubuntunas/files"。

仍然需要弄清楚我的代码为何适用于其他文件夹,而不是该文件夹。

紧凑型版本(注意find ... -maxdepth 1cp -nv

代码:

#!/bin/bash
set -eu
readonly source=/home/bobah
readonly destination=/home/bobah/tmp
while read line; do
  echo 'name: ['${line}'], basename: ['${line##*/}']'
  cp -nv ${line} ${destination}
done < <(find ${source} -maxdepth 1 -name '*.cpp')

输出:

name: [/home/bobah/abc.cpp], basename: [abc.cpp]
name: [/home/bobah/test.cpp], basename: [test.cpp]
`/home/bobah/test.cpp' -> `/home/bobah/tmp/test.cpp'

相关内容

  • 没有找到相关文章

最新更新