Sed

更改多個文件的內容

  • June 18, 2020

我有一個名為 list.txt 的文件,其內容如下:

paswd.c
acnt.c
control.c
... 

(其餘省略)

我想做一些類似虛擬碼的事情:

point to first line of list.txt;
while (list.txt not reaching end of file)
{
   get string from line;
   find -name 'string';
   if (find)
   {
       delete first 7 lines in file;
   }
   advance one line;
}

我相信findxargssed的組合可以實現這一點。

你可以嘗試類似的東西

$ xargs -a list.txt -I myfilename find . -name myfilename -exec sed 1,7d '{}' \;
  • xargs 讀取 list.txt 中的文件名,並將myfilename模式替換為 find 命令中讀取的文件名
  • find 將找到您的文件並將其傳遞給 sed 至此刪除前 7 行(如果少於 7 行,則清空文件)

引用自:https://unix.stackexchange.com/questions/593576