我使用rclone
并且希望获得文件列表而不提及文件的大小。我找不到如何做到这一点,rclone
所以我想用 awk 或类似的东西剥离它。我的输出看起来像这样
59183070 fileserver/transfer_kimberly_2022-12-18_0558 (1).zip
3690 fileserver/transfer_kimberly_2022-12-18_0558 (1).zip - Shortcut.lnk
35961190 fileserver/transfer_2023-06-27_0814.zip
7803667 fileserver/woodproject.zip
7437905920 Them/Data/Before_20230526132130642.FDB
1064525824 Them/Data/Updating_20220705231152059.FDB
1064525824 Them backup/Data/Updating_20220706231124156.FDB
1064525824 Them backup/Data/Updating_20220705231152059.FDB
1064525824 Them backup/Data/Updating_20220706231124156.FDB
7004362 test.zip
7004362 test (1).zip
7803667 37939 37/Data/Updating_20220706231124156.FDB
7803667 37939/Data/Updating_20220706231124156.FDB
剩下的第一个数字是文件大小。我想要这个输出
fileserver/transfer_kimberly_2022-12-18_0558 (1).zip
fileserver/transfer_kimberly_2022-12-18_0558 (1).zip - Shortcut.lnk
fileserver/transfer_2023-06-27_0814.zip
fileserver/woodproject.zip
Them/Data/Before_20230526132130642.FDB
Them/Data/Updating_20220705231152059.FDB
Them backup/Data/Updating_20220706231124156.FDB
Them backup/Data/Updating_20220705231152059.FDB
Them backup/Data/Updating_20220706231124156.FDB
test.zip
test (1).zip
37939 37/Data/Updating_20220706231124156.FDB
37939/Data/Updating_20220706231124156.FDB
我考虑过剥离space
第一个之前的最后一个剩下的所有内容/
。但space
第一个目录或文件名中的 使事情变得复杂。感谢帮助
看来您的数据是基于行的。此外,该模式看起来像是“零个或多个空格,一个或多个数字,一个空格”。编辑此类行的一种工具是
sed
:我使用了字符类 (
[[...]]
),但您也可以使用文字字符范围:您可以在管道中使用
sed
或让它处理文件:您可以使用
lsf
子命令rclone
列出文件和目录,但不列出文件大小。由于lsf
默认情况下不递归,因此lsf -R
如果需要递归列出目录,您可能需要使用。如果您只需要文件的路径(不需要目录),请使用
lsf -R —-files-only
. 您还可以使用 调整输出格式--format
,并且存在多个用于更高级数据过滤的选项(请参阅rclone lsf —-help
)。为了方便下游实用程序进行解析,我建议使用
rclone
子命令的 JSON 输出lsjson
。如果使用
lsjson
而不是ls
orlsf
,则使用(众所周知的 JSON 处理工具)从返回的 JSON 数组的每个元素中jq
提取数据:Path
请注意,
lsjson
默认情况下不会递归,因此我-R
在此处将其与其选项一起使用。如果您想避免列出目录,则仅选择其
IsDir
条目为的数组条目false
:(...或使用
lsjson -R --files-only
, 与 一样lsf
。)作为参考,
lsjson
将返回一个 JSON 对象数组,该数组看起来与此示例等效(使用您的数据作为模型):使用 Perl
使用 Raku(以前称为 Perl_6)
上面是用 Perl 和 Raku 写的答案。Perl/Raku
-pe
标志表示带有自动打印的逐行执行(-e
对于单独的代码,-p
对于逐行自动打印,即代码应用于每一行输入,不需要显式print
或put
不必要)。Raku 中的注释\d
包括 ASCII 加 Unicode 数字。如果您想在 Raku 中仅使用 ASCII,请使用<+[0..9]>
.输入示例:
示例输出:
https://perldoc.perl.org/perlre
https://docs.raku.org/language/regexes