一个清除日志的好方法(syslog有一个文件句柄)已经冻结我的linux服务器(空间不足)我试过 cat /dev/null > fileABC; cat /dev/null/ > fileXYZ
如何通过cat/dev/null将多个文件清除为高效或单个命令中的多个文件.
有什么方法可以bash对find的输出应用变量替换吗?我知道我已经看到有人在堆栈溢出时这样做了,但我似乎再也找不到那个特定的帖子了。
例如,假设我想将文件重命名*.png为*_copy.png. 我知道我可以使用rename它来做到这一点,但这只是一个思想实验。
现在我希望能够做这样的事情:
find . -name "*png" -exec mv "{}" "${{}%.*}_copy.png" \;
Run Code Online (Sandbox Code Playgroud)
这会导致无效替换。当然,我可以先将输出分配给一个变量,然后在子 shell 中应用替换,但这真的是唯一的方法吗?
find . -name "*.png" -exec bash -c 'var="{}"; mv "{}" "${var%.*}_copy.png"' \;
Run Code Online (Sandbox Code Playgroud)
或者有什么办法可以直接实现{}?
共识
正如Etan Reisner所说,处理 find 输出的更好、更安全的方法是将其作为位置参数传递。
find . -name "*.png" -exec bash -c 'mv "$0" "${0%.*}_copy.png"' "{}" \;
Run Code Online (Sandbox Code Playgroud) 如何查找包含隐藏文件和子文件夹的文件夹(可能是多个)文件中包含的字符串?
我尝试了这个命令:
find . -maxdepth 1 -name "tes1t" -print0 | sed 's,\.\/,,g'
Run Code Online (Sandbox Code Playgroud)
但这并没有产生任何结果。
我正在尝试执行 bash 脚本,但我被卡住了。
数据
$ cat test.txt
cat,command,for
cp,command,for
ls,command,to
Run Code Online (Sandbox Code Playgroud)
脚本
#!/bin/bash
CUT_FILE=test.txt
TRN_GUID="1bcd1adf-2016-443b-9f00-2e4ce20726d7"
LCTN_ID="8002"
LCTN_NAME="TEST FILE"
LCTN_ADDR1="This is test"
cat $CUT_FILE | awk -F ',' '{ print '$TRN_GUID','$LCTN_ID','$LCTN_NAME','$LCTN_ADDR1',$1,$2 }'
Run Code Online (Sandbox Code Playgroud)
输出
-bash-3.2# sh test4
awk: cmd. line:1: { print 1bcd1adf-2016-443b-9f00-2e4ce20726d7,8002,TEST
awk: cmd. line:1: ^ unexpected newline or end of string
Run Code Online (Sandbox Code Playgroud)
期望的输出
1bcd1adf-2016-443b-9f00-2e4ce20726d7,8002,"TEST FILE","This is test",cat,command
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
嗨,我对我写入数据库有疑问:
我是新手,mysql_escape_string因为朋友告诉我.因为我使用mysql_escape_string它不再写入我的数据库了.
这是代码:
////////////////////////////////////////////////////////////////
$iets = $_POST['aantal'] + $_POST['begin'];
for ($i = $_POST['begin'] ; $i < $iets ; $i++){
$rows = $rows.'a'.$i.', ';
}
$rows = mysql_escape_string(trim($rows, ', '));
/////////////////////////////////////////////////////////////////////
$iets = $_POST['aantal'] + $_POST['begin'];
for ($i = $_POST['begin'] ; $i < $iets ; $i++){
$r = 'a'.$i;
$values = $values.'\''.$_POST[$r].'\', ';
}
$values = mysql_escape_string(trim($values, ', '));
$naam = mysql_escape_string($_POST['naam']);
mysql_query("INSERT INTO $naam
(
$rows
)
VALUES
(
$values
)");
mysql_close($con);
printf("%s<br />%s", $values, $rows); …Run Code Online (Sandbox Code Playgroud)