2014-01-05 30 views
1

我试图将已经从源文件夹搜索到的文件移动到目标文件夹,并使其只读过程中,下面是我目前的代码,copyfile()是对源文件夹中的所有文件进行迭代的子例程。错误cp:无法创建常规文件“”:没有这样的文件或目录

#!/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 

我目前还没有设法获得权限更改为复制文件工作(当他们这样做了不同版本的代码)。

任何帮助提前非常感谢。

+0

[使用更多行情™(http://mywiki.wooledge.org/BashGuide/Practices# Choose_Your_Shell) – l0b0

回答

2

有你的功能是这样的:

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 
} 

,并调用它像这样:

for f in $1/* 
do 
     echo "file is $f" 
     copyfile "$f" "$2" 
done 
+0

谢谢你的作品:)有没有办法改变复制文件的权限?我试图做到这一点,但它似乎只改变原始文件的权限。 –

+0

是的,您可以更改权限。查看更新的答案。 – anubhava

+0

非常感谢您的帮助! –

相关问题