Sed
更改多個文件的內容
我有一個名為 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; }
我相信find,xargs和sed的組合可以實現這一點。
你可以嘗試類似的東西
$ xargs -a list.txt -I myfilename find . -name myfilename -exec sed 1,7d '{}' \;
- xargs 讀取 list.txt 中的文件名,並將
myfilename
模式替換為 find 命令中讀取的文件名- find 將找到您的文件並將其傳遞給 sed 至此刪除前 7 行(如果少於 7 行,則清空文件)