在shell脚本中将整个内容从文件夹复制到另一个文件夹

时间:2013-11-26 20:24:22

标签: bash shell copy-paste

我正在尝试每个代码将文件夹中的所有内容复制到另一个但我无法做到!我正在尝试在我的Android设备中使用终端模拟器中的代码,因为我需要在我的应用程序中使用该代码。这是我使用的最后一个不起作用的代码:

#!/bash/sh
srcdir="/data/app"
dstdir="/sdcard/prova1"

for f in ${srcdir}/*.apk
do
    cp $f $dstdir $dstfile
done

终端说:

: not found
' unespectedsyntax error: 'do
谁能帮助我吗?这些可能性很好:

1)将/ data / app文件夹中的所有文件复制到/ sdcard / prova1

2)直接复制prova1

中的文件夹应用程序

3)使用执行这两件事之一的java代码。

我有根,所以我可以做这个操作。

6 个答案:

答案 0 :(得分:5)

这些答案对我来说都不适用于递归复制。在我的一个库中的脚本中找到了这个并且认为我会分享它(包含源和目标的子文件夹示例,这是我需要的):

SOURCE="/my/folder"
DESTINATION="/my/destination"

cp -r "$SOURCE/subdir/"* "$DESTINATION/another_sub/"

有了这个,每个子文件夹和每个文件都被复制了。

我不知道为什么但源中引号外的星号为我做了魔术(在这里使用bash 4.3.11)

答案 1 :(得分:2)

这个怎么样,src和dest是目录:     cp -r src dest

答案 2 :(得分:1)

您的文件包含回车符,这就是您收到这些已删除错误消息的原因。使用tr -d '\r' <yourscript >fixedscript摆脱它们。

至于你的脚本,正确的方法是

#!/bin/sh
cp /data/app/*.apk /sdcard/prova1

虽然使您的版本有效的最小修复是

#!/bin/sh
srcdir="/data/app"
dstdir="/sdcard/prova1"

for f in ${srcdir}/*.apk
do
    cp $f $dstdir
done

答案 3 :(得分:0)

这是复制整个源树的复杂方法:

cd $srcdir && tar cf - . | ( cd $dstdir && tar xf - )

将src目录的内容转换为stdout,然后将其传递给子shell,在该子shell中更改为dst目录并从stdin解压缩。

答案 4 :(得分:0)

我认为使用rsync可以解决您的问题。尝试这样的事情:  rsync -avz source_path dest_path

答案 5 :(得分:0)

试试下面的代码吧。将该代码复制并粘贴到文本编辑器中并将其另存为 your_file_name.sh

然后尝试在终端上运行 sh ./your_file_name.sh

cd "/data/app"

dstdir="/sdcard/prova1"


for f in *.apk

do

   cp -v "$f" ${dstdir} "${f%.apk}".apk

done

echo " "

echo "File copied successfully !!"

这会将您的文件从源目录复制到目标文件夹或目录。