今天我发现了一个大小为 4MB 的“空”目录。
它没有可见的内容,所以我尝试了ls -lah
. 这向我展示了一些隐藏文件(不是很大)。搜索目录如此大的原因,我发现点文件 ( .
) 的大小为 3.9MB。
该文件中存储了什么?这不就是一种指向同一目录的链接吗?
这是外壳输出(匿名):
-bash# more /proc/version
Linux version 2.6.18-8.1.15.el5 (mockbuild@builder6.centos.org) (gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Mon Oct 22 08:32:04 EDT 2007
-bash# pwd
/data/foo/bar/tmp
-bash# ls -lah
total 4.1M
drwxrwxrwx 3 nobody nobody 3.9M Nov 21 10:02 .
drwxrwxrwx 16 nobody nobody 4.0K Aug 27 17:26 ..
-rw------- 1 root root 20K Oct 25 14:06 .bash_history
...
Run Code Online (Sandbox Code Playgroud) 我有一个带有 gzip 文件的目录树,如下所示:
basedir/a/file.dat.gz
basedir/b/file.dat.gz
basedir/c/file.dat.gz
etc.
Run Code Online (Sandbox Code Playgroud)
如何使用单个命令将所有这些从 gzip 转换为 xz 而不将每个文件解压缩到磁盘?
带有解压到磁盘的简单的两行代码如下所示:
find basedir/ -type f -name '*.dat.gz' -exec gzip -d {} \;
find basedir/ -type f -name '*.dat' -exec xz {} \;
Run Code Online (Sandbox Code Playgroud)
第一个命令甚至可以更短: gunzip -r *
对于单个文件,即时转换很简单(尽管这不会替换 .gz 文件):
gzip -cd basedir/a/file.dat.gz | xz > basedir/a/file.dat.xz
Run Code Online (Sandbox Code Playgroud)
由于 gzip 和 xz 自己处理扩展,我想说:
gunzip -rc * > xz
Run Code Online (Sandbox Code Playgroud)
我看了find | xargs basename -s .gz { }
一点,但没有得到一个有效的解决方案。
我可以写一个shell脚本,但我觉得应该有一个简单的解决方案。
编辑
感谢所有已经回答的人。我知道我们都喜欢“永不失败的命令™”。所以,为了简单起见:
使用简单的find -exec …
我正在尝试从 Perl 脚本发送一封带有附件的电子邮件。
首先,我创建附件(一个 xml 文件):
open(XMLFILE, ">:utf8", $xmlfile);
print XMLFILE "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
print XMLFILE "<data>\n";
#print XMLFILE "...\n";
print XMLFILE "</data>\n";
close (XMLFILE);
Run Code Online (Sandbox Code Playgroud)
我也尝试open(XMLFILE, ">", $xmlfile);
过binmode XMLFILE, ":utf8";
。
然后我像这样发送电子邮件:
open(MUTT, "|/usr/bin/mutt -s \"TestSubject\" -a $xmlfile \"test\@example.com\"");
binmode MUTT, ":utf8";
print MUTT ("TestBody");
close (MUTT);
Run Code Online (Sandbox Code Playgroud)
尽管如此,正文部分和附件都有Content-Type: text/plain; charset=iso-8859-1
。
我也尝试过open(MUTT, "|/usr/bin/mutt -e \"set file_charset=utf-8\" -a $xmlfile ...
,但这给了我一个Error in command line: file_charset: unknown variable
.
我究竟做错了什么?
centos ×1
command-line ×1
conversion ×1
directory ×1
email ×1
ext4 ×1
filesystems ×1
gzip ×1
ls ×1
mutt ×1
pipe ×1
recursive ×1
size ×1
xz ×1