我的目录中有大约 3-4 百万个文件,文件名以type1.txt, type2.txt.(file are 1type1.txt, 1type2.txt,2type2.txt,2type2.txtetc )结尾
现在我想连接所有以 type1.txt 和 type2.txt 结尾的文件。
目前我正在cat *type1.txt > allTtype1.txt为type2.txt. 我想保留两个最终输出文件中的顺序,我猜是cat这样做的。但速度太慢了。
请建议一些更快的方法来执行相同的操作。
谢谢,拉维
尝试创建一个 10 个字符的密码并将其分配给一个变量并将其回显到标准输出。
这是我到目前为止创建的脚本,但它不起作用。|我知道还有其他方法可以做到这一点,但当涉及超过 1 个步骤时,我从来没有真正擅长使用(管道)将信息从 1 个操作发送到另一个操作。
#!/bin/bash
tmp_pass=0
if [ $tmp_pass=0 ]; then
tmp_pass=`cat /dev/random`
tmp_pass=$(head tmp_pass -c 10 | base64)
echo $tmp_pass
fi
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要的是这样的例子:
tmp_pass)0eq 0,则给它一个新的赋值注意:这在我上面的原始脚本中没有显示,但它确实看到它曾经使用echo filename(1:10)或类似的东西来限制它回显第 1 行的前 10 个字符。
我知道这可以用一行完成,但我不确定如何写出来,任何例子将不胜感激。
如果我想使用 cat 命令输入文件 myfile.txt
说“cat myfile.txt > java myMain”
我应该在 myMain 函数中写什么?myfile.txt 是直接存储在 args[0] 中还是有办法引用它?
.json我的目录中有几个文件。如果我做:
find . -name '*.json' -exec echo "{\"filename\": \"{}\", \"content\": `cat {}` }," \;
Run Code Online (Sandbox Code Playgroud)
我得到:
{"filename": "./a.json", "content": },
{"filename": "./b.json", "content": },
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做:
find . -name '*.json' -exec echo "{\"filename\": \"{}\", \"content\": cat {} }," \;
Run Code Online (Sandbox Code Playgroud)
我得到:
{"filename": "./a.json", "content": cat ./a.json },
{"filename": "./b.json", "content": cat ./b.json },
Run Code Online (Sandbox Code Playgroud)
那么如何正确编辑a.json和b.json内容cat呢?
顺便说一句,如果我这样做:
find . -name '*.json' -exec cat {} \;
Run Code Online (Sandbox Code Playgroud)
json 文件在控制台中正确打印,所以我知道文件内容是有效的。
我有一个 bash 脚本,它从命令管道中生成一些文本。基于命令行选项,我想对输出进行一些验证。对于一个人为的例子......
CHECK_OUTPUT=$1
...
check_output()
{
if [[ "$CHECK_OUTPUT" != "--check" ]]; then
# Don't check the output. Passthrough and return.
cat
return 0
fi
# Check each line exists in the fs root
while read line; do
if [[ ! -e "/$line" ]]; then
echo "Error: /$line does not exist"
return 1
fi
echo "$line"
done
return 0
}
ls /usr | grep '^b' | check_output
Run Code Online (Sandbox Code Playgroud)
[编辑] 更好的例子:https : //stackoverflow.com/a/52539364/1888983
这真的很有用,特别是如果我有多个可以成为直通的函数。是的,我可以移动 CHECK_OUTPUT 条件并创建一个带有或不带有 check_output 的管道,但我需要为每个组合编写行以获得更多功能。如果有更好的方法来动态构建管道,我想知道。
问题是“猫的无用使用”。可以避免这种情况并使其check_output …
大家好,我有seevral文件,例如
FILE1
>content
AGGAGAjg
GAUGAUGUG
AAG
FILE2
>Againontent
HDHDIHD
DHHDDHK
DH
Run Code Online (Sandbox Code Playgroud)
我想将所有这些文件归为一个独特的使用 cat FILE* >> Unique_file
还要>在每个文件中的之前添加文件名。
那么内容Unique_file将是:
>FILE1_content
AGGAGAjg
GAUGAUGUG
AAG
>FILE2_Againontent
HDHDIHD
DHHDDHK
DH
Run Code Online (Sandbox Code Playgroud) 我有一个函数,它是我的 C 程序中 SIGINT 信号的处理程序,它在执行时只需执行以下命令:
void sigint_handler(int sig)
{
system("cat output.txt");
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
问题是“cat”命令似乎没有做任何事情。如果我尝试做其他事情而不是“cat”,比如“echo something”,它工作正常,所以我相信问题出在“cat”而不是 system() 函数上。文件“output.txt”位于 C 程序的同一目录中,如果我尝试通过另一个 C 脚本对该文件执行 cat ,它会起作用。此外,如果我尝试从 shell 执行该命令,它会起作用。
我已经检查了从 的返回system("cat output.txt"),它是 0。那么问题是什么?
编辑:文件 output.txt 也在程序中作为 FILE 流(使用fopen())打开,由另一个线程打开,这可能是一个问题吗?
这是cat用 C 编写的流行 bash 命令。
我不知道这条线是做什么的:
if (argc==1) return cat(stdin), 0;
Run Code Online (Sandbox Code Playgroud)
我以前从未见过类似的东西。这是完整的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static void cat(FILE *f)
{
int c;
while (EOF != (c = getc(f)))
{
if (EOF == putchar(c))
{
perror("cat");
return;
}
}
if (ferror(f))
{
perror("cat");
return;
}
}
int main(int argc, char **argv)
{
if (argc==1) return cat(stdin), 0;
for(int i=1; i<argc; i++)
{
if (!strcmp("-", argv[i]))
{
cat(stdin);
continue;
}
FILE *f = fopen(argv[i], "r");
if (!f) …Run Code Online (Sandbox Code Playgroud) 我使用以下命令加入大约20个文件,总大小为40Gb.
cat hda1.ntfs-ptcl-img.gz.* > hda1.ntfs-ptcl-img.gz
Run Code Online (Sandbox Code Playgroud)
只是想知道这个过程通常需要多长时间,因为它已经运行了一段时间.
谢谢.
针对真实用例的开放式问题(有创意!).基本上我想cat(1)现有文件(2)程序的输出和(3)特定的文本位.在管道,回声和重定向之间,我觉得我应该能做得比这更好!
pandoc -t latex -o mydoc.tex mydoc.rst
echo \\end{document} > footer.tex
cat header.tex mydoc.tex footer.tex > fulldoc.tex
Run Code Online (Sandbox Code Playgroud)