这种格式的文件有很多:
IMG_20240717_191421.jpg
IMG_20240620_165358_BURST001_COVER.jpg
IMG_20240624_173513_2.jpg
如何在 Linux 中的 Bash 中将其重命名为:
20240717_191421.jpg
20240620_165358_BURST001_COVER.jpg
20240624_173513_2.jpg
IMG_
这就是必须去除的东西。
这种格式的文件有很多:
IMG_20240717_191421.jpg
IMG_20240620_165358_BURST001_COVER.jpg
IMG_20240624_173513_2.jpg
如何在 Linux 中的 Bash 中将其重命名为:
20240717_191421.jpg
20240620_165358_BURST001_COVER.jpg
20240624_173513_2.jpg
IMG_
这就是必须去除的东西。
有一个文件夹,里面有很多文件:
112.mkv
123.md5
123.mkv
221.mkv
467.mkv
aa1.mkv
abc.md5
abc.mkv
bbc.mkv
dde.md5
dde.mkv
ggh.mkv
....
xxy.md5
xxy.mkv
xxz.mkv
如何将.md5
文件和相关.mkv
文件移动到新目录(使用 Bash)?
123.md5
123.mkv
abc.md5
abc.mkv
dde.md5
dde.mkv
xxy.md5
xxy.mkv
我想将这些文件移动到一个新目录中,例如mkvandmd5/
。
或者,Midnight Commander 中是否有任何提示来标记这些文件.md5
和相关.mkv
文件?
如何在 Linux 中的 Bash shellscript 中编写一个可以执行此类操作的部分
输入一个数字
必须在 4 到 999 的范围内
如果没有,请再次询问是否输入
输入的数字 * 5 * 随机数 [1-9](单个数字)
显示结果并询问是否良好
输入 - 进行新的运行(输入的数字 * 5 * 随机数 [0-9](单个数字))
y - 表示脚本中的“是”、“好的”,继续
n - 再次返回“输入数字”处
e - 退出脚本
我知道使用“读取”命令会提示输入一些内容,并且我知道使用cat /dev/urandom | tr -cd '0-9' | head -c 1
会变成一个随机数字
文件中groupAfiles.txt
包括以下行:
file14
file2
file4
file9
我需要一种方法来将它们转换为删除file
和添加/dev/loop
,并将它们放在一行中,并且它们之间有一个空格。
/dev/loop14 /dev/loop2 /dev/loop4 /dev/loop9
然后我需要将其放入数组中。
(但数字会改变)
我该如何做?
在 Linux 中的 Bash 中的 for 循环中我执行:
... ; do echo "$i --> $i-new" ; ...
输出结果如下:
file1 --> file1-new
file2 --> file2-new
...
file9 --> file9-new
file10 --> file10-new
file11 --> file11-new
如何成为这样的输出:
file1 --> file1-new
file2 --> file2-new
...
file9 --> file9-new
file10 --> file10-new
file11 --> file11-new
?
和
awk '{ printf "%-15s %s\n", $1, $2 }' renamed | sort -V
... 我从文件中获得了良好的输出renamed
。
它看起来像:
file1 file1.new
但我想将输出改为:
file1 --> file1.new
我想-->
在每行的第 15 个位置添加。
怎么办呢?
tar -I pixz -cf foo.tar.xz ./foo
压缩东西。
tar -I pixz -xf foo.tar.xz
解压缩内容。
并附pixz -l foo.tar.xz
上内容列表。
我如何使用(mc
)Midnight Commander 来实现这一点?
如果我选择foo.tar.xz
并按mc
Enter 键,则不会出现任何内容。
CPU 使用率暂时升高,但没有发生任何错误。
正常情况下mc
可以打开这样的档案文件吗?
如何mc
打开并浏览索引.tar.xz
文件?
我正在考虑将数据驱动器上的文件系统从 ext4 更改为 btrfs,因为 btrfs 可以进行压缩,并且存储空间最终会耗尽。
我已经看到 btrfs 可以使用 zlib、lzo 和 zstd 进行压缩。
https://btrfs.readthedocs.io/en/latest/Compression.html
我怎样才能进行一些测试运行来查看压缩效果如何?
有什么方法可以将数据写入 /dev/null 或其他位置并计算它们在那里经过的字节数?
如何使用不同的压缩器(zlib、lzo 和 zstd)进行一些测试,而无需书写,但查看可以压缩多少?
我运行这个命令:
ls -1 | xargs -I% -n1 -P8 myprogramm -s1 -r5 -q -o %.dat %
它一次可以运行 8 次,-q
myprogramm 中的开关用于退出,这样就可以了。
但是如果程序运行完成,每次运行时我都会添加类似的内容; echo %
作为屏幕上的输出名称。
我运行这个命令:
ls -1 | xargs -I% -n1 -P8 myprogramm -s1 -r5 -q -o %.dat % ; echo %
我没有看到任何错误,但是输出不是我想要的。
我看到在 bash 中所有运行完成后只有一个带有一个符号的新行,%
但我会得到如下输出:
file1
file2
file3
...
%
=fileN 是用xargs运行的作业,怎么变成这样的输出?
如何检查脚本启动路径是否存储在 HDD 或 SSD 驱动器上?
我已经阅读了有关ssd 和hdd 的cat /sys/block/sda/queue/rotational
节目。0
1
if [ "$(</sys/block/sda/queue/rotational)" = 0 ]; then
echo "SSD"
else
echo "HDD"
fi
但是这如何与.
或结合$PWD
进行检查?
文件夹中的文件从file1
到fileX
。X 表示有时从file1
到file21
。有时从到file1
。file55
如何运行脚本或一行程序来创建 4 个组 (AD)/4 个列表,
filegroupA.txt
filegroupB.txt
filegroupB.txt
filegroupD.txt
但文件名应随机且无序地放入 .txt 文件中
filegroupA.txt
file2
file18
file7
file13
file4
...
filegroupB.txt
...
编辑:
名称中没有特殊字符。
它们都具有相同的方案,fileX 和 fileXX。
也没有子目录。
filegroupX-file 的最小输出必须为 4。
fileXX 文件的数量绝不会少于 20 个。
大写的 AD 标签并不是严格要求的,它只是为了更好的阅读,但不是必须具备的功能。
在 bash 中,我将运行一个脚本,查看文件夹folder123/
以了解其中的文件需要多少空间。但是,我将把这个请求的值乘以1,5
可用空间,然后从中减去,.
如果有足够的可用空间,则继续执行脚本,但如果没有足够的可用空间,则退出并出现错误。
为了检查需要多少空间,我尝试了这个
du -b folder123/ | tail -n 1 | awk '{print $1}'
为了检查有多少可用空间,我发现了这一点
df --output=avail -B 1 "$PWD" |tail -n 1
但是在 bash 脚本中,如何将请求数乘以可用数1,5
,然后从可用数中减去?
:编辑
如果我用类似的东西
avail=$(df --output=avail -B 1 . | tail -n 1)
req=$(( $(du -sb tempdir/ | cut -f1) * 3 / 2))
sum=$(printf '%d\n' "$((avail - req))")
但是如何继续检查 $sum 是否正常?
有一个脚本,1.sh
。1.sh
启动1a.sh
然后1b.sh
但是如何退出所有脚本,如何退出以及如果出现错误则1.sh
如何不启动 ?1b.sh
1b.sh
使用find
,我将检查目录中是否存在任何最小大小为 1 字节的文件in
,如果不存在则退出。
我尝试过类似的东西,但它不起作用
find ./in/ -type f -iname '*' -size 1c &> /dev/null
if [ "$?" != 0 ]
then
echo file size is under 1 byte, aborting...
fi
我想在 Linux 系统上使用 bash 和 xargs 并行运行 N 次命令。命令如下:
for i in `seq 1 $(howmany.txt)`; do aprogramm --file file$i.dat ; done
该文件howmany.txt
包含值100
,并且ntimes.txt
包含值5
。
文件按顺序从 1 到 100file1
存在file100
,我想一次并行处理 5 个文件。如何使用 执行此操作xargs
?
如何检查 Linux 系统上当前工作目录中有多少可用空间?
我有一个filesize
文件,其中包含1073741824
所需的磁盘空间量(以字节为单位)。
我需要在脚本中检查文件夹中是否有文件内容大小 * 1.25 字节的空闲空间。该怎么做?
pwd
可以打印当前文件夹的路径,但是如何将其与之结合起来df
?
为了以线性模式连接 Linux 文件/设备,我有这个dm-joinlinear.sh
脚本
在 Linux 系统中以线性模式将文件/设备连接在一起,感谢 telcoM
#!/bin/sh
usage() {
echo "Usage: ${0##*/} <target name> <component...>" >&2
exit 64 # EX_USAGE
}
if [ "$1" = "" ] || [ "$1" = "-h" ] || [ "$1" = "-?" ] || [ "$1" = "--help" ]
then
usage
fi
if [ -e "/dev/mapper/$1" ]
then
echo "ERROR: target $1 already exists." >&2
exit 73 # EX_CANTCREAT
fi
MAPNAME="$1"
shift
DMMAP=$(mktemp)
trap "rm -f $DMMAP" EXIT
sum=0
while [ "$1" != "" ]
do
if [ ! -e "$1" ]
then
echo "ERROR: $1 does not exist"
exit 66 # EX_NOINPUT
fi
if [ ! -b "$1" ]
then
echo "ERROR: $1 is not a block device"
exit 69 # EX_UNAVAILABLE
fi
srcN="$1"
sizeN=$(blockdev --getsz "$srcN")
echo "$sum $sizeN linear $srcN 0" >>$DMMAP
sum=$(expr $sum + $sizeN)
shift
done
dmsetup create $MAPNAME < $DMMAP
我运行脚本
./dm-joinlinear.sh one /dev/loop? /dev/loop??
或者
./dm-joinlinear.sh one /dev/mapper/file? /dev/mapper/file??
/dev/loop0 and /dev/mapper/file1 are the same
/dev/loop1 and /dev/mapper/file2 are the same
....
/dev/loop32 and /dev/mapper/file33 are the same
我可以使用以下脚本运行
dm-joinlinear.sh one /dev/loop[0-9] /dev/loop[1-2]? /dev/loop3[0-2]
或者
dm-joinlinear.sh one /dev/loop0 /dev/loop1 /dev/loop2 .... and so on up to /dev/loop32 (to long to write all down here all)
或者与删除“循环”并使用 mapper/file 相同,但从 1 开始而不是从 0 开始
我更喜欢使用 /dev/mapper/file 而不是 /dev/loop
但是我该如何表示dm-joinlinear.sh
他们必须加入多少台设备?值是parts.txt
为了测试,我在 Linux 系统上创建了文件list.txt
。其中有如下数字:
4 1 5 2 3
(有时会多一些或少一些)
我如何使用 fallocate 运行这些数字?
fallocate -l 1stnumberG file1
fallocate -l 2ndnumberG file2
fallocate -l 3rdnumberG file3
....
我想到类似的事情
declare -i counter ; counter=1 ; for i in "'seq 1 $(wc -w list.txt | cut -c 1)'" ; do fallocate -l ${i}G "file$counter" ; (( ++ counter )) ; done
fallocate: unerwartete Anzahl an Argumenten
declare -i counter ; counter=1 ; for i in "'seq 1 $(wc -w list.txt | cut -c 1)'" ; do fallocate -l ${i}G "file$counter" ; (( ++ counter )) ; done < $(cat list.txt)
V: $(cat list.txt): Mehrdeutige Umlenkung.
但我没有工作....
为了在我的 Linux 系统上测试线性连接 3 个文件,我这样做:
fallocate -l 100M file1.image
fallocate -l 150M file2.image
fallocate -l 50M file3.image
然后我运行losetup
:
losetup /dev/loop1 file1.image
losetup /dev/loop2 file2.image
losetup /dev/loop3 file3.image
我找到了这个用于合并两个文件的脚本:
#!/bin/sh
# Join 2 devices together
size1=`blockdev --getsz $1`
size2=`blockdev --getsz $2`
echo "0 $size1 linear $1 0
$size1 $size2 linear $2 0" | dmsetup create joined
我开始
./join.sh /dev/loop1 /dev/loop2
它适用于两个设备,它们合并成一个:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop1 7:1 0 100M 0 loop
└─joined 253:10 0 250M 0 dm
loop2 7:2 0 150M 0 loop
└─joined 253:10 0 250M 0 dm
然后,我删除“加入”的设备dmsetup remove joined
并调整 3 个设备文件的脚本:
#!/bin/sh
# Join 3 devices together
size1=`blockdev --getsz $1`
size2=`blockdev --getsz $2`
size3=`blockdev --getsz $3`
echo "0 $size1 linear $1 0
$size1 $size2 linear $2 0
$size2 $size3 linear $3 0" | dmsetup create joined
开始于
./join.sh /dev/loop1 /dev/loop2 /dev/loop3
device-mapper: reload ioctl on joined (253:10) failed: Das Argument ist ungültig
Command failed.
但它失败了,并出现上述错误。我做错了什么?
消息
device-mapper: table: 253:10: linear: Gap in table (-EINVAL)
device-mapper: ioctl: error adding target to table
在
mdadm
我找到了一种用于线性连接的方法,当我尝试它时,它起作用了。我做了:
dd if=/dev/zero bs=1M count=100 of=a.img
dd if=/dev/zero bs=1M count=50 of=b.img
dd if=/dev/zero bs=1M count=150 of=c.img
losetup -f
/dev/loop0
for i in a b c; do losetup -f $i.img; done
mdadm --build /dev/md0 -l linear -n 3 /dev/loop[012]
mdadm: array /dev/md0 built and started.
cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md0 : active linear loop2[2] loop1[1] loop0[0]
307200 blocks super non-persistent 64k rounding
unused devices: <none>
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 100M 0 loop
└─md0 9:0 0 300M 0 linear
loop1 7:1 0 50M 0 loop
└─md0 9:0 0 300M 0 linear
loop2 7:2 0 150M 0 loop
└─md0 9:0 0 300M 0 linear
为什么该dmsetup
方法不适用于 3 台设备?
dmsetup
和方式有什么区别mdadm
?
...是干什么dmsetup
用的?
是mdadm
用于突袭吗?
我是否已完成具有 3 种不同磁盘大小的 raid0?这可能吗?
在我的 Linux 系统上,我有一个大小为 1073741824 字节的文件“1gb.file”。
我会将此文件放入一个带有 ext4 文件系统的 LUKS 容器(“1gb.file.crypt”)。
文件“1gb.file.crypt”必须有多大才能为其中的luksformat
和 ext4 文件系统(我会做的mkfs.ext4 -m 0
)提供足够的空间luksdevice
。
如何在 ext4 文件系统中获取足够的空间,以便我可以将 1073741824 字节的文件放入里面,如何计算?
如果我将 3 ... 7 或 10GB 的文件放入具有 ext4 文件系统的 LUKS 容器中,那么容器的大小是多少?
如何计算?
容器内部和 ext4 文件系统中还留有一些空闲的 MB,这是可以的,但我不想有数百 MB 的空闲空间。
我不知道它是否相关,但文件和容器是只读的。
或者我应该把容器弄得足够大,然后在文件放入后再缩小它?但该怎么做呢?