Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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/unit-testing/4.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 在循环中使用的Bash抓取目录名_Linux_Bash_Count_Dirname - Fatal编程技术网

Linux 在循环中使用的Bash抓取目录名

Linux 在循环中使用的Bash抓取目录名,linux,bash,count,dirname,Linux,Bash,Count,Dirname,我想获取目录的名称,为每个目录创建一个tar.gz文件 例如,所有目录的开头都是: count = 10 for ((k = 1 ; k < $count ; k++)); do tar -cf ADIRNAME.tar.gz ADIRNAME sleep 1 done 我怎样才能做到这一点呢?现在还不清楚您需要做什么,但这里有一些要点可以借鉴: 查找所有目录: find -maxdepth 1 -type d 查找以某个字母开头的所有目录: find -maxdep

我想获取目录的名称,为每个目录创建一个tar.gz文件

例如,所有目录的开头都是:

count = 10

for ((k = 1 ; k < $count ; k++));
do
    tar -cf ADIRNAME.tar.gz ADIRNAME
    sleep 1
done

我怎样才能做到这一点呢?

现在还不清楚您需要做什么,但这里有一些要点可以借鉴:

查找所有目录:

find -maxdepth 1 -type d
查找以某个字母开头的所有目录:

find -maxdepth 1 -type d -name 'X*'
现在,您可以获得第一个字母的列表:

for n in `find -maxdepth 1 -type d`; do echo ${n:2:1}; done | sort -u

最后,对这些字母执行tar'ing。

这将为每个a*目录创建一个tarball

for dir in A*/; do
    tar -cf "${dir%/}".tar.gz "$dir"
done
通配符扩展为要循环的目录名列表。将匹配项设置为目录的尾部斜杠将包含在扩展中;我们用一个简单的变量替换从tarball的文件名中修剪它${variable%suffix}扩展到变量的值,如果有后缀,从末尾修剪;还有相应的${variableprefix}和许多其他替换;查看shell的手册页


双引号是必需的,不过只要没有带空格的文件名,脚本就可以在没有双引号的情况下工作。即使在许多shell脚本教程中,这也是一个常见的疏忽。

使用find获取目录?您可以在*/中使用for dir迭代目录;不要重复$dir;Done所有目录是什么意思:文件系统中任何位置的所有目录?特定文件夹中的所有目录?specefic文件夹中特定文件夹下的所有目录。它应该抓取以字母A开头的foldername,使用这个文件夹名创建一个tar文件,然后执行其他命令..for循环是怎么回事?通过一个例子,您是否期望或假设将有十个目录?为什么要睡觉?