Error cp: cannot create regular file “”: no such f

2019-07-24 11:27发布

I am trying to move files that have been searched for from a source folder into a target folder and make them read only in the process, below is my current code, copyfile() is a subroutine that iterates the process for all files in the source folder.

    #!/bin/bash

    copyfile()
    {     
    ls -l "$f"
    read -p "Copy y/n? " yn
    if [ "$yn" == "y" ]
    then
        cp "$f" "$2"  
    else
        echo $f skipped
    fi
    }

    if [ -d $1 ] # $1 source folder
   then
       echo
   else
       echo This directory does not exist
   fi
   if [ -d $2 ] # $2 target folder
   then
       echo Directory Exists
   else
       mkdir $2
       echo $2 created
   fi
   for f in $1/*
   do
       echo "file is $f"
       copyfile "$f"
   done

I currently have not managed to get the permission change to work for the copied files (when they have done so with different versions of the code).

Any help is much appreciated in advance.

标签: bash shell unix
1条回答
2楼-- · 2019-07-24 11:53

Have your function like this:

copyfile() {
    ls -l "$1"
    read -p "Copy y/n? " yn
    if [ "$yn" == "y" ]
    then
        cp "$1" "$2"
        chmod 644 "$2" 
    else
        echo "$1 skipped"
    fi
}

and call it like this:

for f in $1/*
do
       echo "file is $f"
       copyfile "$f" "$2"
done
查看更多
登录 后发表回答