From 6147dc9a85d2a54aff3d735d6a7c88d18a8b4f1d Mon Sep 17 00:00:00 2001 From: KlzXS Date: Sat, 20 Jun 2020 13:39:32 +0000 Subject: [PATCH] Add plugin bulknew (#662) * Add plugin bulknew * Update documentation * Update dependencies * Add whitespace note --- plugins/README.md | 7 ++++--- plugins/bulknew | 32 ++++++++++++++++++++++++++++++++ plugins/preview-tabbed | 1 + plugins/preview-tui | 1 + 4 files changed, 38 insertions(+), 3 deletions(-) create mode 100755 plugins/bulknew diff --git a/plugins/README.md b/plugins/README.md index 841c6b83..2af105e7 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -29,13 +29,14 @@ Plugins are installed to `${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins`. | [autojump](autojump) | Navigate to dir/path | sh | autojump | | [bookmarks](bookmarks) | Use named bookmarks managed with symlinks | sh | fzf | | [boom](boom) | Play random music from dir | sh | [moc](http://moc.daper.net/) | +| [bulknew](bulknew) | Create multiple files/dirs at once | bash | sed, xargs, mktemp | | [dups](dups) | List non-empty duplicate files in current dir | sh | find, md5sum,
sort uniq xargs | | [chksum](chksum) | Create and verify checksums | sh | md5sum,
sha256sum | -| [diffs](diffs) | Diff for selection (limited to 2 for directories) | sh | vimdiff | +| [diffs](diffs) | Diff for selection (limited to 2 for directories) | sh | vimdiff, mktemp | | [dragdrop](dragdrop) | Drag/drop files from/into nnn | sh | [dragon](https://github.com/mwh/dragon) | | [finder](finder) | Run custom find command and list | sh | - | | [fzcd](fzcd) | Change to the directory of a fuzzy-selected file/dir | sh | fzf | -| [fzhist](fzhist) | Fuzzy-select a cmd from history, edit in `$EDITOR` and run | sh | fzf | +| [fzhist](fzhist) | Fuzzy-select a cmd from history, edit in `$EDITOR` and run | sh | fzf, mktemp | | [fzopen](fzopen) | Fuzzy find a file in dir subtree and edit or open | sh | fzf, xdg-open | | [fzz](fzz) | Change to any directory in the z database with fzf | sh | fzf, z | | [getplugs](getplugs) | Update plugins to installed `nnn` version | sh | curl | @@ -54,7 +55,7 @@ Plugins are installed to `${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins`. | [moclyrics](moclyrics) | Show lyrics of the track playing in moc | sh | [ddgr](https://github.com/jarun/ddgr), [moc](http://moc.daper.net/) | | [mocplay](mocplay) | Append (and/or play) selection/dir/file in moc | sh | [moc](http://moc.daper.net/) | | [mp3conv](mp3conv) | Extract audio from multimedia as mp3 | sh | ffmpeg | -| [nbak](nbak) | Backs up `nnn` config | sh | tar, awk | +| [nbak](nbak) | Backs up `nnn` config | sh | tar, awk, mktemp | | [nmount](nmount) | Toggle mount status of a device as normal user | sh | pmount, udisks2 | | [nuke](nuke) | Sample file opener (CLI-only by default) | sh | _see in-file docs_ | | [oldbigfile](oldbigfile) | List large files by access time | sh | find, sort | diff --git a/plugins/bulknew b/plugins/bulknew new file mode 100755 index 00000000..4010662d --- /dev/null +++ b/plugins/bulknew @@ -0,0 +1,32 @@ +#!/usr/bin/env sh + +# Description: Allows for creation of multiple files/directories at the same time. +# Plugin opens a temp file where each entry is to be written on a separate line +# +# Note: Only relative paths are supported. Absolute paths are ignored +# Leading and trailing whitespace in path names is also ignored +# +# Shell: POSIX compliant +# Author: KlzXS + +EDITOR="${EDITOR:-vi}" +TMPDIR="${TMPDIR:-/tmp}" + +printf "'f'ile / 'd'ir? " +read -r resp + +if [ "$resp" = "f" ]; then + #shellcheck disable=SC2016 + cmd='mkdir -p "$(dirname "{}")" && touch "{}"' +elif [ "$resp" = "d" ]; then + cmd='mkdir -p {}' +else + exit 1 +fi + +tmpfile=$(mktemp "$TMPDIR/.nnnXXXXXX") +$EDITOR "$tmpfile" + +sed "/^\//d" "$tmpfile" | xargs -n1 -I{} sh -c "$cmd" + +rm "$tmpfile" diff --git a/plugins/preview-tabbed b/plugins/preview-tabbed index 4998de6b..9fefee14 100755 --- a/plugins/preview-tabbed +++ b/plugins/preview-tabbed @@ -15,6 +15,7 @@ # dependencies, see the script itself # - vim (or any editor/pager really) # - file +# - mktemp # - xdotool (optional, to keep main window focused) # # How to use: diff --git a/plugins/preview-tui b/plugins/preview-tui index fafee764..f12bf1e9 100755 --- a/plugins/preview-tui +++ b/plugins/preview-tui @@ -12,6 +12,7 @@ # - less or $PAGER # - tree or exa or ls # - mediainfo or file +# - mktemp # - unzip # - tar # - man