Text 在bash(linux)中,将多个同名文件中的文本复制到不同的路径

Text 在bash(linux)中,将多个同名文件中的文本复制到不同的路径,text,Text,我需要帮助将内容从各种文件复制到其他文件(相同的名称和格式,不同的路径) 例如,$HOME/initial/baby.desktop有我需要写入$HOME/scripts/baby.desktop的文本。这对于单个文件来说非常简单,但我在$HOME/initial/中有2500个文件,在$HOME/scripts/中有相同的数字,并且有相应的名称(相同的名称和格式)。我希望将路径A中的文件内容附加(复制)到路径B(具有相同的名称和格式)中的文件末尾,而不删除路径B中的文件内容 $HOME/ini

我需要帮助将内容从各种文件复制到其他文件(相同的名称和格式,不同的路径)

例如,
$HOME/initial/baby.desktop
有我需要写入
$HOME/scripts/baby.desktop
的文本。这对于单个文件来说非常简单,但我在
$HOME/initial/
中有2500个文件,在
$HOME/scripts/
中有相同的数字,并且有相应的名称(相同的名称和格式)。我希望将路径A中的文件内容附加(复制)到路径B(具有相同的名称和格式)中的文件末尾,而不删除路径B中的文件内容

$HOME/initial/*.desktop
到final
$HOME/scripts/*.desktop
的内容示例。我尝试了以下方法,但无效:

cd $HOME/initial/

for i in $( ls *.desktop ); do  egrep "Icon" $i  >> $HOME/scripts/$i; done

首先,我会备份$HOME/initial和$HOME/scripts,因为人们可能会误解你的问题。像这样:

cd $HOME
tar -cvf initial.tar initial
tar -cvf scripts.tar scripts
这将把$HOME/initial中的所有文件放在一个名为initial.tar的tar文件中,把$HOME/scripts中的所有文件放在一个名为scripts.tar的tar文件中

现在回答你的问题。。。通常,如果要将FileB的内容放在FileA的末尾,则命令为

cat FileB >> FileA
请注意,双“>>”表示“追加”,而不是单“>”表示覆盖

所以,我想你应该这样做:

cd $HOME/initial/baby.desktop
cat SomeFile >> $HOME/scripts/baby.desktop/SomeFile
其中SomeFile是您选择测试的任何文件的名称。我会测试它是否有效,然后,如果您对此满意,继续在循环中运行相同的命令:

cd $HOME/initial/baby.desktop
for SOURCE in *
do
   DESTINATION="$HOME/scripts/baby.desktop/$SOURCE"
   echo Appending "$SOURCE" to "$DESTINATION"
   #cat "$SOURCE" >> "$DESTINATION"
done

当输出看起来正确时,删除倒数第二行开始处的“#”,然后再次运行它。

我解决了它,如果有些人想了解如何解决它非常简单:

使用Sed

我只需要将匹配(或模式)行“Icon=/usr/share/some_picture.png转换为$HOME/initial/example.desktop到其他名称和格式相同的$HOME/scripts/example.desktop,但我有很多.desktop文件(2500个文件)

\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 如果您只需要将所有文件复制到具有相同名称和格式的其他文件中

cd $HOME/initial

STRING_LINE=`grep -l -R "Icon=" *.desktop`

for i in $STRING_LINE; do cat $i >> $HOME/scripts/$i ; done
使用cat

cd $HOME/initial

STRING_LINE=`grep -l -R "Icon=" *.desktop`

for i in $STRING_LINE; do cat $i >> $HOME/scripts/$i ; done

你的问题不太清楚。你说“我有2500个桌面”是什么意思"? 你有2500个用户吗?你还说你想复制/混合文件-怎么做?你想把一个附加到另一个的末尾吗?还是备用线路?或者一行的前10行,然后另一行的前3行?谢谢马克,我的英语很差。我接受了杰瑞的更正,谢谢杰瑞!。标记我想要一个附加到另一个的末尾哪个附加到哪个?我只需要匹配行“Icon=/usr/share/some_picture.png到$HOME/initial/example.desktop到其他具有相同名称和格式的$HOME/scripts/example.desktop,但我有很多.desktop文件