iva*_*a14 0 linux bash shell-script
我需要tar
在 shell 脚本中使用创建一个目录存档,但我也应该排除隐藏文件和大小等于0
. 此外,第一个命令行参数是应该创建的档案的位置,第二个是档案的名称,第三个是应该存档其文件的目录的路径。
我尝试在终端中发送这样的参数:
/bin/bash ss1 /home/user arch /home/user/folder
Run Code Online (Sandbox Code Playgroud)
但它给了我一些 tar 错误。我试着像这样存档:
tar -cvf --exclude=.* $1/$2 $3
Run Code Online (Sandbox Code Playgroud)
但这不正确,我不确定正确的语法是什么,以及如何排除空文件和隐藏文件。
既然你标记了这个,linux
我就假设你有 GNUfind
和 GNU tar
。
如果您的文件名没有嵌入换行符并且您不想存档空目录:
find "$3" -type f \! -empty \! -name '.*' | tar cvf "$1/$2" -T -
Run Code Online (Sandbox Code Playgroud)
find
找到相关文件,并-T -
告诉tar
读取要从中存档的文件列表stdin
。
细化这个,如果你想包括空目录:
find "$3" \( -type d -empty \) -o \( -type f \! -empty \! -name '.*' \) | \
tar cvf "$1/$2" -T -
Run Code Online (Sandbox Code Playgroud)
如果你也想处理的文件名与嵌入式换行符:
find "$3" \( \( -type d -empty \) -o \( -type f \! -empty \! -name '.*' \) \) -print0 | \
tar cvf "$1/$2" --null -T -
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2230 次 |
最近记录: |