Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux shell脚本读取目录名并在另一个目录中创建同名的.txt文件_Linux_Shell - Fatal编程技术网

Linux shell脚本读取目录名并在另一个目录中创建同名的.txt文件

Linux shell脚本读取目录名并在另一个目录中创建同名的.txt文件,linux,shell,Linux,Shell,我有两个目录,一个叫做clients,另一个叫做test,在这个叫做clients的目录中,我有一些文件夹,我需要一个shell脚本来读取clients中文件夹的名称,并在文件夹test中创建同名的.txt文件,我对shell非常陌生,我不知道怎么做,你们能帮帮我吗?试着用xargs和lsls-F显示目录client中的所有文件,但随后显示文件夹,并在最后显示一个额外的/。grep使用ls-F输出中的额外/仅将文件夹传递给下一个命令。然后,sed的/\///g从grep中删除额外的/,并将名称传

我有两个目录,一个叫做clients,另一个叫做test,在这个叫做clients的目录中,我有一些文件夹,我需要一个shell脚本来读取clients中文件夹的名称,并在文件夹test中创建同名的.txt文件,我对shell非常陌生,我不知道怎么做,你们能帮帮我吗?

试着用
xargs
ls
ls-F
显示目录
client
中的所有文件,但随后显示文件夹,并在最后显示一个额外的
/
grep
使用
ls-F
输出中的额外
/
仅将文件夹传递给下一个命令。然后,
sed的/\///g
从grep中删除额外的
/
,并将名称传递给xargs。然后,xargs将文件夹传递给
%
符号,然后用名称创建文本文件

ls -F client | grep / | sed 's/\///g' |  xargs -I % touch tests/%.txt

尝试将
xargs
ls
一起使用
ls-F
显示目录
client
中的所有文件,但随后显示文件夹,并在最后显示一个额外的
/
grep
使用
ls-F
输出中的额外
/
仅将文件夹传递给下一个命令。然后,
sed的/\///g
从grep中删除额外的
/
,并将名称传递给xargs。然后,xargs将文件夹传递给
%
符号,然后用名称创建文本文件

ls -F client | grep / | sed 's/\///g' |  xargs -I % touch tests/%.txt

谢谢你,朋友,结果比我想象的要好,谢谢你详细的解释,很好的解决方案。我想提供一个bash替代方案:
fori-in-client/*/;进行触摸测试/$(basename$i).txt;完成
。首先,我们只迭代客户端中的目录,而不是所有文件,然后我们使用
basename
来获得目录名,而不带尾随斜杠(并且,没有父目录)。谢谢你的朋友,这比我想象的要好,谢谢你的详细解释伟大的解决方案。我想提供一个bash替代方案:
fori-in-client/*/;进行触摸测试/$(basename$i).txt;完成
。首先,我们只迭代客户端中的目录,而不是所有文件,然后使用
basename
获取目录名,而不带尾随斜杠(并且不带父目录)。