我需要bash脚本来tar目录中的一半文件。这些文件是.gz文件,命名约定为x.gz,其中x是从1开始到100结束的数字,我需要tar前半部分文件。我该怎么做呢?bash脚本来tar目录中的特定文件
2
A
回答
6
你的问题有点不清楚。我假设你有x.gz,并且你想把1.gz加到50.gz到一个tar文件中。如果是这样的话:
tar cjf MyArchive.tar.bz2 {1..50}.gz
上面的命令将会把前50个.gz文件到一个名为MyArchive.tar.bz2
0
我知道你有一个名为X档案任意数量的档案。 gz在当前目录中。你想打一半他们。
但是正如你从答案中看到的那样,你的描述不够详细。
我试图提供最灵活的。
files=`find . -maxdepth 1 -mindepth 1 -type f -printf '%f\n'|grep -P '^\d+.gz$'|sort -n`
n=`echo $files|sed "s/ /\n/g"|wc -l`
half=$(($n/2))
d=`echo $files|sed "s/ /\n/g"|head -$half`
tar czf archive.tar.gz $d
-1
下面是做到这一点的一种方式(使用KSH这应该是可在任何地方是BASH)
下方的储存脚本x.sh和chmod + X x.sh;然后运行它
#!/bin/ksh
#
#
## first create 100 dummy GZ files
##
x=0
while :
do
x=$((${x}+1));
if [ x -gt 100 ]; then
break;
fi
touch ${x}.gz;
done
## next parse the list, sort it and loop tar it stopping at 50.gz
##
for x in `ls *.gz | sed 's/\.gz//g' | sort -n`
do
if [ $x -gt 50 ]; then
exit 0;
fi
tar -rvf all-50.tar ${x}.gz
done
+0
您不应该尝试解析ls的输出。另外,我在这里看不到任何ksh特定的功能。 – jordanm 2012-01-17 20:37:39
相关问题
- 1. Powershell脚本来计算目录和子目录中的特定文件
- 2. 目录(备份)文件的Bash脚本
- 3. Bash脚本从子目录中移动最新的特定文件类型
- 4. Bash脚本来备份在配置文件中指定的多个目录
- 5. 使用tar压缩bash脚本:第n行是一个目录
- 6. 从特定目录中的python脚本运行bash命令
- 7. BASH:在进度目录中的最新文件的tar cpf
- 8. 计算指定目录中的所有文件/目录 - bash/shell脚本
- 9. bash脚本来复制特定的一组文件
- 10. Bash脚本删除除特定的文件和目录以外的所有文件和目录
- 11. bash脚本来同步目录,但忽略某些文件
- 12. 只能从特定目录写入和执行文件的Bash脚本
- 13. 一个bash脚本运行的目录程序不具有特定文件
- 14. bash脚本将文件复制到多个指定的目录
- 15. Bash脚本,用于在BASH外壳中以特定格式列出目录中的文件
- 16. 仅tar目录中的文件
- 17. 脚本创建一个父目录的tar,它的子目录中有个别的tar目录
- 18. 如何使用bash脚本循环遍历文件名中包含特定单词的目录中的文件?
- 19. bash脚本从文本文件解析特定的记录号和字段?
- 20. shell bash脚本 - 上传一个大的tar文件,重试?
- 21. 用于列出文本文件中子目录和文件的Bash脚本
- 22. Bash脚本横切目录
- 23. Bash脚本对目录中的所有文件执行命令
- 24. Bash脚本仅对目录中的新文件执行
- 25. Bash脚本列出目录中的文件
- 26. bash脚本中的主目录导航
- 27. Bash脚本:在文件编辑后恢复文件中的特定文本
- 28. 循环目录和文件bash脚本 - awk不写入文件
- 29. 如何避免“/ *”替代bash脚本根目录中的文件/目录?
- 30. bash〜用于循环目录中的特定文件
我想了一会儿是否是好的礼仪发表此评论,我不确定,但在这里它:我不明白为什么我的答案得到一个投票下来?如果下来的选民发表任何评论,会不会更好?这真是令人沮丧。 – 2012-01-17 21:10:40
我发现你的答案虽然复杂,但我也不明白投票的结果。 – user121196 2012-01-18 01:50:18
@ user121196那么你可以自己投票呢? – 2012-01-18 08:36:38