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

fiei3ece  于 2023-04-07  发布在  Shell
关注(0)|答案(6)|浏览(230)

我尝试每一个单一的代码复制一个文件夹内的所有东西到另一个,但我不能这样做!我试图使用我的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/prova 1
2)直接复制prova 1中的文件夹app
3)使用java代码来做这两件事之一。
我有根,所以我可以做这个操作。

okxuctiv

okxuctiv1#

这些答案都不适用于递归复制。在我的一个库中的脚本中发现了这个,并认为我应该分享它(源和目标的子文件夹示例,这是我所需要的):

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

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

这样,每个子文件夹和每个文件都被复制了。
我不知道为什么,但是源代码中引号外的星号为我带来了魔力(在这里使用bash 4.3.11)

2w2cym1i

2w2cym1i2#

下面这个例子如何,其中srcdest是目录:

cp -r src dest
mepcadol

mepcadol3#

您的文件包含回车符,这就是为什么您会收到这些垃圾邮件错误消息。使用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
rsl1atfo

rsl1atfo4#

下面是一个复制整个源代码树的复杂方法:

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

这将src目录的内容转到stdout,然后将其通过管道传输到子shell,在子shell中更改为dst目录并从stdin解压缩。

irtuqstp

irtuqstp5#

我认为使用rsync可以解决您的问题。尝试以下操作:rsync -avz源路径目标路径

yrdbyhpb

yrdbyhpb6#

只需尝试下面的代码。将代码复制并粘贴到文本编辑器中,并将其保存为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 !!"

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

相关问题