查看: 1863|回复: 19
|
如何处理乱码的文件名字
[复制链接]
|
|
我从电脑 ssh 进我的的raspberry pi,想移一个文件到我的电脑,但是那文件的中文名乱码了,只是显示 ???.txt,我要如何在terminal‘选’那文件?(想过rename成123.txt,但是没有办法在command指定那文件)
请问有什么方法?
|
|
|
|
|
|
|
|
发表于 21-10-2016 04:55 PM
来自手机
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 21-10-2016 05:31 PM
|
显示全部楼层
请问如何复制文件名?如何piont to那个文件?
|
|
|
|
|
|
|
|
发表于 26-10-2016 08:29 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 26-10-2016 10:13 PM
|
显示全部楼层
本帖最后由 aksin 于 26-10-2016 10:15 PM 编辑
--- |
|
|
|
|
|
|
|
楼主 |
发表于 26-10-2016 10:15 PM
|
显示全部楼层
林果皞 发表于 26-10-2016 08:29 AM
我没用过 raspberry pi, 不过略懂 linux 皮毛。
[1]
先用 locale 列出语言环境。
然后改全局 locale, LC_ALL=en_US.utf8
然后用 locale 看改成功了吗。
然后尝试再 ls。
[2] 用 ls -lia 看 inode ...
谢谢,第二个是我想要的方法,因为如果我在纯CLI上敲command,有时没有办法敲中文,所以第二个方法能让我迂回指定那个文件
请问那个-exec 是什么意思?是pipe | 的意思吗?
那个{}是指原本的文件名字吗? 可以用* 吗?
|
|
|
|
|
|
|
|
发表于 26-10-2016 10:53 PM
|
显示全部楼层
本帖最后由 林果皞 于 27-10-2016 12:22 AM 编辑
find . #递归列出当下目录文件名。
find . -iname '*a*' #递归列出当下目录中间有 a 字的文件名。记得加上单引号。
find . -exec ls -l {} \; #递归列出当下目录的文件名, 然后每列出一个(不会 print),执行一次 exec 的命令 ls -l {} 。
find . -exec echo 123 \; #每列出一个, echo 123 字眼。
{} 是每列出一个的那个文件名字,用来给 exec 执行的代号。
上面开头讲的 -iname 是用文件 pattern 当搜寻条件,-inum 则是用文件独特的 inode 号码当搜寻条件。
切记,如果用 -inum,要 cd 去那个目录或指定 find /那个目录,如果你 find / 就是找完整个系统, 找到来天黑了。系统是没有 inode 地图的,只能一个个目录傻找。
-iname 是 case insensitive ('*a*' 包含 A), -name 是 case sensitive ('*a*' 不包 A)。
-exec 不是 pipe, 只是 find 命令的参数吧了。
你不需要换名字,可以直接 rsync,如:
find . -inum 12324474 -exec rsync -azvb --no-t {} xiaobai@127.0.0.1:/tmp/ \;
忘记讲,-inum 时记得加 maxdepth 1,省下搜寻子目录。
|
|
|
|
|
|
|
|
发表于 26-10-2016 11:24 PM
|
显示全部楼层
本帖最后由 林果皞 于 12-11-2016 02:59 PM 编辑
[方法 4]
用 vim . 来浏览/运行(按 x)/改名 (也可以用 / 和 vim 一样搜索, 有乱码也能 play video。
我的 vi 其实是 vim.gtk3,不确定你的 vim 能不能支持 )。按 i 键可以 toggle 时间日期或 expanded tree view。按 "-" 键去上一级 parent 目录。按 Enter 进去 text 或 binaries view,这时候当然不希望按 :q 直接关掉 vim,所以必须按 Ctrl+^ 才能回去上一页(重复按 Ctrl+^ 可以切换 text/binaries view 和上一页之间)。
按 'x' 默认打开 player 可能不是你要的, 你可以用这行命令来更改成 webm, mp4, mkv 默认用 mplayer 打开:
for i in mp4,'video/mp4' mkv,'video/x-matroska' webm,'video/webm' ; do ext=${i%,*}; ftype=${i#*,}; fname="/tmp/my-vi-mplayer_$ext.desktop"; echo -e "[Desktop Entry]\nName=My vi mplayer\nExec=mplayer %u\nIcon=\nType=Application\nTerminal=false\nMimeType=$ftype" > "$fname"; xdg-desktop-menu install "$fname"; done
你也可以改成用 alias 或 function, 比如我的执行部分改成召唤 ~/.bash_aliases 叫 mm4 的 function):
for i in mp4,'video/mp4' mkv,'video/x-matroska' webm,'video/webm' ; do ext=${i%,*}; ftype=${i#*,}; fname="/tmp/my-vi-mplayer_$ext.desktop"; echo -e "[Desktop Entry]\nName=My vi mplayer\nExec=bash -c "'"'"source ~/.bash_aliases; mm4 %u"'"'"\nIcon=\nType=Application\nTerminal=false\nMimeType=$ftype" > "$fname"; xdg-desktop-menu install "$fname"; done
[更新: 文件名有 double quotes 要放在 /usr/bin/* 解决] for i in mp4,'video/mp4' mkv,'video/x-matroska' webm,'video/webm' ; do ext=${i%,*}; ftype=${i#*,}; fname="/tmp/my-vi-mplayer_$ext.desktop"; echo -e "[Desktop Entry]\nName=My vi mplayer\nExec=/usr/bin/mm4 %u\nIcon=\nType=Application\nTerminal=false\nMimeType=$ftype" > "$fname"; xdg-desktop-menu install "$fname"; done
p/s: 也可以用 NERDTree 取代 Netrw。再加上 ctrlp plugin (能搜索+xdg-open) 就完美了。可惜的是它处理 [ 和 ] 很 buggy,很常见的 youtube 文件名。现成的解决方法是只用 Netrw, 不用 NERDTree 。
根据你的说法似乎缺少 gui。没关系,可以用 mplayer -novideo 文件名, mplayer -vo caca -quiet 文件名,或 mplayer -vo fbdev -quiet 文件名来播放影片或歌曲。前者是完全没 video。后两者是有 ascii video (caca 和 fbdev 之间选其中一个可以看到视频的)。把这个选择放进去上面的 Exec= 那部分即可。
*【其它】 vlc 可以直接播放。图片则用 fbi (要 sudo)。
[方法 5]
用 nautilus 的 connect to server... (Either 在 Panel Menu 那里或 Other Location 那里找 "connect to server..." :
输入类似的 sftp://xiaobai@127.0.0.1/root (我之前 Fedora 有 bug, 要先去 /root 先,再 Ctrl+L 更改成 / 浏览)。xiaobai 换成你的 rasberry 用户名,127.0.0.1 换成你的 rasberry IP。只需开启 ssh service 即可使用。用完右键 Unmount 即可。
[方法 6] 跟 5 相似用 mount,client 要安装 sshfs。
$ sudo mkdir /mnt/rpi; sudo sshfs -o allow_other xiaobai@127.0.0.1:/ /mnt/rpi
$ 用后 cd ~; sudo unmount /mnt/rpi 即可。
|
|
|
|
|
|
|
|
楼主 |
发表于 27-10-2016 10:02 AM
|
显示全部楼层
林果皞 发表于 26-10-2016 11:24 PM
[方法 4] 用 vim . 来浏览/运行(按 x)/改名 (也可以用 / 搜索,和 vim 一样。我的 vi 其实是 vim.gtk3,不确定你的 vim 能不能支持 )。按 i 键可以 toggle 时间日期或 expanded tree view。按 "-" 键去上一级 parent ...
谢谢解释。。。 【4】 的方法不太明白,本人只是基础而已啊。。。
|
|
|
|
|
|
|
|
发表于 27-10-2016 05:28 PM
|
显示全部楼层
本帖最后由 林果皞 于 27-10-2016 05:38 PM 编辑
[4] 是把 vim 当成 file manager 来用。你先试下执行 vim /tmp 或 vim .
你也可以在 vim 里头输入 :e路径 (用 <Tab> autocomplete) 来跳去你要的目录。
|
|
|
|
|
|
|
|
发表于 27-10-2016 11:20 PM
|
显示全部楼层
本帖最后由 林果皞 于 28-10-2016 02:22 PM 编辑
目标:
ssh 去 rasperry pi,把 vim 当成 file manager 来用。进去有乱码文件名的文件,然后 Ctrl+c 直接 copy 去你另一台的电脑。
设置步骤:
[0] 先确保另一台电脑 A (假设也是 linux) 和电脑 B rasperry pi ip yyy.yyy.yyy.yyy 和 两个都启动 ssh server, 如 sudo service ssh start 或 sudo service sshd start 或开机自动启动。
[1] 在电脑 linux A 制作储存的目录, mkdir ~/storage
[2] 在电脑 linux A, ssh 进去你的 rasperry pi ip yyy.yyy.yyy.yyy。
[3] ssh rasperry pi 后,执行这行命令 (只需改掉那两个 “用户名@xxx.xxx.xxx.xxx" 改成你的这台 linux 电脑 A 用户名和 ip):
mkdir -p ~/.ssh; chmod 700 ~/.ssh; ssh-keygen -f ~/.ssh/id_rsa -q -P ""; cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys; ; cat ~/.ssh/id_rsa.pub | ssh 用户名@xxx.xxx.xxx.xxx "mkdir -p ~/.ssh; chmod 700 ~/.ssh; cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"; eval `ssh-agent -s`; ssh-add; ssh 用户名@xxx.xxx.xxx.xxx
[4] 成功后是在电脑 A linux 里头,Ctrl+D 或 exit 回去 rasperry pi。
[5] 在 rasperry pi, 确保安装 vim 或 gvim 或 vim.gtk3。
[6] vim ~/.vimrc 添加这两行 (inoremap 会 corrupt file,所以不放。为了方便看成功与否,没加 <Enter>), 更改成你 linux 电脑 A 的用户名和 ip 和开头 #[1] 决定的 storage 路径:
vnoremap <C-c> :!eval `ssh-agent -s`; ssh-add; rsync -azvb --no-t %:gs/./\\&/:p '用户名@xxx.xxx.xxx.xxx:/home/用户名/storage/'
nnoremap <C-c> :!eval `ssh-agent -s`; ssh-add; rsync -azvb --no-t %:gs/./\\&/:p '用户名@xxx.xxx.xxx.xxx:/home/用户名/storage/'
[5] 然后 :wq 储存关闭 vim。
以后 (不需要再做上面的步骤,除非 ip 改了):
[1] 开启两台电脑的 ssh 服务。 ssh rasperry pi,然后输入 vim . ("点号" 表示当下目录,你可以输入其它路径)。
[2] 然后在 Netrw 之下随便 Enter 进去你要复制的目录或任何文件。
[3] 如果是普通文件如 mp4, 就 Enter 进去看到一堆乱码内容,然后按上面 ~/.vimrc 弄好的快捷键 Ctrl+c, 再 Enter 即可实现 rsync。好了后, Enter 回去 mp4, Ctrl+ ^ 回去 Netrw 页面。复制目录也是一样道理, Enter 去那个目录再 Ctrl+c 即可。
注: 如果目标文件有 newline 的文件,我暂时想不到办法选,如有任何更新会在这儿。我没试验过 ??? 问号乱码的情况,所以有问题的话跟我讲。不过我已经在 Virtual Console 试验过乱码文件没问题, 单双引号参参也没问题。
注2: 上面涉及有关 ssh 的功能是为了让 vim 不用 password 从 rasperry pi 复制传送到电脑 A。
注3: ssh 输送声音暂时还没弄好,等弄好后在这更新。
|
|
|
|
|
|
|
|
楼主 |
发表于 30-10-2016 08:29 PM
|
显示全部楼层
谢谢,明白了。。原来可以当file manager用。。
请问你有没有用omxplayer?播电影因为他的‘2’键 只是加速 到1.125x而已,不能1.2x,1.3x,1.4x.到1.9x. 有没有其他player推荐?
|
|
|
|
|
|
|
|
发表于 30-10-2016 11:09 PM
|
显示全部楼层
本帖最后由 林果皞 于 31-10-2016 02:41 AM 编辑
我都是用 mplayer, 不过不懂你的 raspberry pi support 到吗。
mplayer -speed 1.21 或 on the fly 按 [ 或 ] 键。
加快时,默认是 chipmunk/baby 声音,要加上 -af scaletempo 才可以拿到正常的声音 (pitch)。
不过 -af scaletempo 默认是没有快捷键的,你必须在 ~/.mplayer/input.conf 文件里头自定义快捷键,如:
xb@dnxb:~/Downloads$ cat ~/.mplayer/input.conf
; af_add scaletempo
' af_del scaletempo
xb@dnxb:~/Downloads$
常用的快捷键是:
上 / 下: 跳一分钟
左 / 右: 跳十秒
o: 看时间 OSD (按多几次有不同的 behavior)
9 / 0: 调小声, 调大声
space: 暂停
Esc / q: 关掉 player
[ / ]: 减速/加速 (不懂是不是我的耳朵问题,我通常要从快速变回 original 时,要从 original 减多一次,在加速一次到 original 才觉得速度正常)
f: toggle fullscreen
[mpv]
另一个选择是 mpv,是 mplayer 加强版, 命令行例子:
mpv --no-border -geometry 256x144+1095+600 -loop 0 -idle 2>/dev/null 影片.mkv
我喜欢它的地方是可以在 borderless 的情况下用滑鼠移动窗口,这一点是 mplayer 做不到的。
其它跟 mplayer 明显的区别是默认不需要 scaletempo 就有正常音, 而且有没有 caca 支持是一个大问题 (i.e. 在 virtual console 播放 ascii video),要自己另外 compile 或 `brew install mpv --with-libcaca` (用 `mpv --vo=help` 检查有没有 caca,我的 kali 没有)。它的 fullscreen 也默认有播放选项的按钮。还有 Esc 只是弄小 fullscreen 而不是关 player,不过按 'q' (quit) 就可以了。其它常用快捷键跟上面提过的 mplayer 快捷键一样。
|
|
|
|
|
|
|
|
楼主 |
发表于 31-10-2016 05:49 PM
来自手机
|
显示全部楼层
林果皞 发表于 30-10-2016 11:09 PM
我都是用 mplayer, 不过不懂你的 raspberry pi support 到吗。
mplayer -speed 1.21 或 on the fly 按 [ 或 ] 键。
加快时,默认是 chipmunk/baby 声音,要加上 -af scaletempo 才可以拿到正常的声音 (pit ...
尝试了mplayer,画面几乎没动,声音也是一样,terminal说“your system is too slow to play this" ... |
|
|
|
|
|
|
|
发表于 31-10-2016 06:12 PM
|
显示全部楼层
本帖最后由 林果皞 于 1-11-2016 08:09 PM 编辑
网上的方法你试验过了吗 ?
[1] -ao alsa
[2] -lavdopts threads=4
要不然你用 mpv,它有特别给 -vo rpi 的。
|
|
|
|
|
|
|
|
楼主 |
发表于 6-11-2016 10:45 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 7-11-2016 03:01 PM
|
显示全部楼层
aksin 发表于 6-11-2016 10:45 AM
试过了,不能。
mpv rpi的install 有问题,缺少好多library的东东。。我是看这里的https://nwgat.ninja/quick-easy-compiling-mpv-for-raspberry-pi/
sudo vi 检查你的/etc/apt/sources.list,确保不是 wheezy, 而是 jessie 或 stable,因为 wheezy 没有 mpv。
deb http://mirrordirector.raspbian.org/raspbian/ stable main contrib non-free rpi
确保后,执行 `sudo apt-get update && sudo apt-get dist-upgrade`
过后尝试安装 `sudo apt-get install mpv`
|
|
|
|
|
|
|
|
楼主 |
发表于 7-11-2016 08:14 PM
|
显示全部楼层
林果皞 发表于 7-11-2016 03:01 PM
sudo vi 检查你的/etc/apt/sources.list,确保不是 wheezy, 而是 jessie 或 stable,因为 wheezy 没有 mpv。
deb http://mirrordirector.raspbian.org/raspbian/ stable main contrib non-free rpi
确保后 ...
我的就是wheezy...那要如何?upgrade 去jessie? 会不会影响其他的setting(如samba,deluge)?
|
|
|
|
|
|
|
|
发表于 8-11-2016 12:46 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 8-11-2016 11:03 AM
|
显示全部楼层
林果皞 发表于 8-11-2016 12:46 AM
dist-upgrade 是会影响没错。rf: http://askubuntu.com/a/639838/265303
那你先做 `sudo apt-get update && sudo apt-get upgrade` 先。再试 `sudo apt-get install mpv`。
如果是你 raspberry 很重要怕搞 ...
谢谢。。。VLC之前试过了,如果是用hardware decode的话,就不能控制电影,任何按键都不response ,如果set成software decode,电影就几乎不会动。至于jessie,看看有什么影响后再决定要不要upgrade。。。谢谢你的解答🙏
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|