相关疑难解决方法(0)

获取文件名中的扩展名

如何从 bash 获取文件扩展名?这是我尝试过的:

filename=`basename $filepath`
fileext=${filename##*.}
Run Code Online (Sandbox Code Playgroud)

通过这样做,我可以bz2从路径中获得扩展名/dir/subdir/file.bz2,但是我的路径有问题/dir/subdir/file-1.0.tar.bz2

如果可能的话,我更喜欢只使用 bash 而不使用外部程序的解决方案。

为了让我的问题更清楚,我正在创建一个 bash 脚本,只需通过extract path_to_file. 如何提取文件由脚本通过查看其压缩或存档类型来确定,可能是 .tar.gz、.gz、.bz2 等。我认为这应该涉及字符串操作,例如,如果我得到扩展名,.gz那么我应该检查它.tar之前是否有字符串.gz- 如果有,扩展名应该是.tar.gz.

shell bash filenames

43
推荐指数
4
解决办法
7万
查看次数

“mv”文件的inode编号乱码?

我有几个文件在文件名中存在编码问题(德语变音,用 Windows 刻录在 CD 上,由 Windows 读取并使用 Seafile 同步到 Linux。有些地方出了问题......)。Bash 和 zsh 只显示“?” 而不是变音,stat显示类似

$ stat Erg?nzung.doc 
File: ‘Erg\344nzung.doc’
Size: 2609152         Blocks: 5096       IO Block: 4096   regular file
Device: 806h/2054d      Inode: 12321475    Links: 1
Run Code Online (Sandbox Code Playgroud)

我只能使用自动完成功能输入文件名。如何重命名文件?LibreOffice(或其他文件类型的其他程序)似乎无法读取受影响的文件,他们抱怨“没有这样的文件或设备”。

我在想mv --by-inode 12321475 Ergänzung.doc,但没有--by-inode开关mv。我还可以做些什么?

shell character-encoding inode rename mv

8
推荐指数
1
解决办法
1万
查看次数

如何更改 detox 的配置(破折号而不是下划线)?

到目前为止,我找到了一个解决方案,可以大量更改所有这些烦人的文件名,使它们可读且更易于在命令行中操作。

于是我在众多命令中发现了一个叫做detox的小软件。默认情况下,它将空格替换为_。通读手册页并没有给我一个答案,如何使排毒重命名文件用-, 替换空格。

[/] cd test
one five/  one four/  one one/  one three/  one two/
[test] detox *
[test] l
one_five/  one_four/  one_one/  one_three/  one_two/
[test] 
Run Code Online (Sandbox Code Playgroud)

怎么做?

我找不到.detoxrc文件(或与该程序相关的任何文件),如果我创建它,我不知道要在其中放入什么。

PS 除了排毒之外还有其他方法吗?

command-line scripting filenames rename

4
推荐指数
1
解决办法
4064
查看次数