如何在Linux上使用Suplash FS多次压缩不同的文件夹?

发布于 2025-01-31 09:39:50 字数 723 浏览 6 评论 0原文

我尝试了那些没有成功的人:

for i in */; do mksquashfs "${i}" "${i}.squashfs" -comp xz

find . -name "*/" -exec mksquashfs {} {}.squashfs -comp xz \;

我在这里的对象是在位置上找到文件夹,并分别压缩它们,但没有一个一个一个。

原始代码:

mksquashfs Direcoty\ Name\ To\ Compress \1/ Direcoty\ Name\ To\ Compress \1.squashfs -comp xz

mksquashfs Direcoty\ Name\ To\ Compress \2/ Direcoty\ Name\ To\ Compress \2.squashfs -comp xz

mksquashfs Direcoty\ Name\ To\ Compress \3/ Direcoty\ Name\ To\ Compress \3.squashfs -comp xz

mksquashfs Direcoty\ Name\ To\ Compress \4/ Direcoty\ Name\ To\ Compress \4.squashfs -comp xz

mksquashfs Direcoty\ Name\ To\ Compress \5/ Direcoty\ Name\ To\ Compress \5.squashfs -comp xz

I have tried those without success:

for i in */; do mksquashfs "${i}" "${i}.squashfs" -comp xz

find . -name "*/" -exec mksquashfs {} {}.squashfs -comp xz \;

My object here, is find folders on the location, and compress them separately, but without doing it one by one.

Original code:

mksquashfs Direcoty\ Name\ To\ Compress \1/ Direcoty\ Name\ To\ Compress \1.squashfs -comp xz

mksquashfs Direcoty\ Name\ To\ Compress \2/ Direcoty\ Name\ To\ Compress \2.squashfs -comp xz

mksquashfs Direcoty\ Name\ To\ Compress \3/ Direcoty\ Name\ To\ Compress \3.squashfs -comp xz

mksquashfs Direcoty\ Name\ To\ Compress \4/ Direcoty\ Name\ To\ Compress \4.squashfs -comp xz

mksquashfs Direcoty\ Name\ To\ Compress \5/ Direcoty\ Name\ To\ Compress \5.squashfs -comp xz

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

高跟鞋的旋律 2025-02-07 09:39:50

这是更多的狂欢,找到用法而不是南瓜。

您在两次尝试中都犯了错误。

in */in */;做mksquashfs“ $ {i}”“ $ {i} .squashfs” -comp xz

在此尝试中,您会忘记“* /”将扩展到带有尾随 /图像文件名,即

i =“ hello/”

$ {i} .squashfs = hello/.squashfs

您要么必须剥离尾随/,要么首先没有它。

这将

for i in *; do if [ -d "$i" ]; then mksquashfs "$i" "$i.squashfs" -comp xz; fi; done

在查找案例中

起作用

查找。 -name“*/” -exec mksquashfs {} {} .squashfs -comp xz;

查找会抱怨嵌入的“/”*/“”。此外,一旦固定发现将递归下降目录,并在所有内容上运行MKSquashf。您想将其限制在顶级和目录。

这将起作用

find . -maxdepth 1 -name "[^.]*" -type d -exec mksquashfs {} {}.squashfs -comp xz \;

This is more Bash and Find usage rather than Squashfs.

You have made mistakes in both attempts.

for i in */; do mksquashfs "${i}" "${i}.squashfs" -comp xz

In this attempt, you're forgetting that "*/" will expand to a filename with a trailing /, and this will be included in the Squashfs image filename, i.e.

i = "hello/"

${i}.squashfs = hello/.squashfs

You either have to strip the trailing /, or not have it there in the first place.

This will work

for i in *; do if [ -d "$i" ]; then mksquashfs "$i" "$i.squashfs" -comp xz; fi; done

In the Find case

find . -name "*/" -exec mksquashfs {} {}.squashfs -comp xz ;

Find will complain about the embedded "/" in "*/". Additionally, once fixed find will recursively descend the directories, running Mksquashfs on everything. You want to limit it to the top level and directories.

This will work

find . -maxdepth 1 -name "[^.]*" -type d -exec mksquashfs {} {}.squashfs -comp xz \;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文