Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ubuntu linux中复制和附加文件_Linux_Shell - Fatal编程技术网

在ubuntu linux中复制和附加文件

在ubuntu linux中复制和附加文件,linux,shell,Linux,Shell,我有两个文件夹,每个文件夹包含351个文本文件,我想将相应的文本从一个文件夹复制到另一个文件夹中的相应文件? 当我使用cat命令时,结果得到一个空文件?有什么问题吗 我的代码是: #!/bin/bash DIR1=$(ls 2/) DIR2=$(ls 3/) for each $i in $DIR1; do for each $j in $DIR2; do if [[ $i == $j ]];then sudo cat $i $j >> $j fi done done 2/和3/

我有两个文件夹,每个文件夹包含351个文本文件,我想将相应的文本从一个文件夹复制到另一个文件夹中的相应文件? 当我使用cat命令时,结果得到一个空文件?有什么问题吗

我的代码是:

#!/bin/bash
DIR1=$(ls 2/)
DIR2=$(ls 3/)

for each $i in $DIR1; do
for each $j in $DIR2; do
if [[ $i == $j ]];then
sudo cat $i $j >> $j
fi
done
done

2/和3/是包含数据的文件夹…

DIR1
DIR2
分别包含目录
2
3
中的文件名。 除了文件名中可能存在的空格或特殊字符问题外,还必须使用
2/$i
3/$j
$i
$j
单独引用当前目录中具有相同名称的文件(
2
3
的父目录)

最好不要解析
ls
的输出。 您不需要两个嵌套循环

#!/bin/bash

DIR1=2
DIR2=3

for source in $DIR1/*
do
    dest="$DIR2/$(basename $source)"

    if [ -f "$dest" ]
    then
        sudo cat "$source" >> "$dest"
    fi
done
另见


根据您的需要,最好使用
sudo
运行整个脚本,而不是为每个文件运行
sudo
。以上版本将仅以root用户身份执行
cat“$source”
。以root用户身份运行整个脚本时,还包括“$dest”

DIR1
DIR2
分别包含目录
2
3
中的文件名。 除了文件名中可能存在的空格或特殊字符问题外,还必须使用
2/$i
3/$j
$i
$j
单独引用当前目录中具有相同名称的文件(
2
3
的父目录)

最好不要解析
ls
的输出。 您不需要两个嵌套循环

#!/bin/bash

DIR1=2
DIR2=3

for source in $DIR1/*
do
    dest="$DIR2/$(basename $source)"

    if [ -f "$dest" ]
    then
        sudo cat "$source" >> "$dest"
    fi
done
另见


根据您的需要,最好使用
sudo
运行整个脚本,而不是为每个文件运行
sudo
。以上版本将仅以root用户身份执行
cat“$source”
。当以root用户身份运行整个脚本时,其中还包括“$dest”

当我运行上述编辑时,2/$i和3/$j,它会使用类似以下内容更改文件夹3中的文件。。。。。。。你到底跑了什么?我不明白“当我运行上述编辑时,2/$I和3/$j”。我刚刚修复了脚本中
basename
命令中的一个错误:必须是
$source
而不是
$I
是的。。非常感谢,先生……它也会给你这样的东西舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍行…它已经存在于3文件夹文件中,并直接附加到该文件夹中…非常感谢您的帮助。。。当我运行上面的编辑,2/$i和3/$j时,它正在工作,它用类似这样的东西更改文件夹3中的文件。。。。。。。你到底跑了什么?我不明白“当我运行上述编辑时,2/$I和3/$j”。我刚刚修复了脚本中
basename
命令中的一个错误:必须是
$source
而不是
$I
是的。。非常感谢,先生……它也会给你这样的东西舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍舍行…它已经存在于3文件夹文件中,并直接附加到该文件夹中…非常感谢您的帮助。。。它也在起作用,所以你可以看到,(U&L.SE),(SO),(AskU),等等。也可以看到,(U&L.SE),(SO),(AskU),等等。